Sending and Receiving Messages
The chat application defines a custom message, named "CHAT_MESSAGE", which clients send and receive. Messages are sent via MessageManager's sendUPC() method and received via MessageManager's addMessageListener() method.
The Code
Here's the code for the chat, including all HTML, CSS, and JavaScript.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Union Chat for JavaScript (OrbiterMicro)</title>
<style type="text/css">
#chatPane {
border: inset 2px;
height: 100px;
width: 400px;
overflow: auto;
padding: 5px;
margin-bottom: 5px
}
</style>
<script type="text/javascript" src="http://cdn.unioncloud.io/OrbiterMicro_latest.js"></script>
<script type="text/javascript">
var orbiter;
var msgManager;
var UPC = net.user1.orbiter.UPC;
var roomID = "chatRoom";
function init () {
orbiter = new net.user1.orbiter.Orbiter();
orbiter.getLog().setLevel(net.user1.logger.Logger.DEBUG);
orbiter.enableConsole();
if (!orbiter.getSystem().isJavaScriptCompatible()) {
displayChatMessage("Your browser is not supported.");
return;
}
orbiter.addEventListener(net.user1.orbiter.OrbiterEvent.READY, readyListener, this);
orbiter.addEventListener(net.user1.orbiter.OrbiterEvent.CLOSE, closeListener, this);
orbiter.connect("tryunion.com", 80);
displayChatMessage("Connecting to Union...");
}
function readyListener (e) {
msgManager = orbiter.getMessageManager();
msgManager.addMessageListener(UPC.JOINED_ROOM, joinedRoomListener, this);
msgManager.addMessageListener(UPC.CLIENT_ADDED_TO_ROOM, clientAddedListener, this);
msgManager.addMessageListener(UPC.CLIENT_REMOVED_FROM_ROOM, clientRemovedListener, this);
msgManager.addMessageListener("CHAT_MESSAGE", chatMessageListener, this, [roomID]);
displayChatMessage("Connected.");
displayChatMessage("Joining chat room...");
msgManager.sendUPC(UPC.CREATE_ROOM, roomID);
msgManager.sendUPC(UPC.JOIN_ROOM, roomID);
}
function closeListener (e) {
displayChatMessage("Orbiter connection closed.");
}
function joinedRoomListener () {
displayChatMessage("Chat ready!");
}
function clientAddedListener (roomID, clientID) {
displayChatMessage("User" + clientID + " joined the chat.");
}
function clientRemovedListener (roomID, clientID) {
displayChatMessage("User" + clientID + " left the chat.");
}
function sendMessage () {
var outgoing = document.getElementById("outgoing");
if (outgoing.value.length > 0) {
msgManager.sendUPC(UPC.SEND_MESSAGE_TO_ROOMS, "CHAT_MESSAGE", roomID, "true", "", outgoing.value);
outgoing.value = "";
setTimeout(function () {outgoing.focus();}, 10);
}
}
function chatMessageListener (fromClientID, message) {
displayChatMessage("User" + fromClientID + ": " + message);
}
function displayChatMessage (message) {
var msg = document.createElement("span");
msg.appendChild(document.createTextNode(message));
msg.appendChild(document.createElement("br"));
var chatPane = document.getElementById("chatPane");
chatPane.appendChild(msg);
if (chatPane.childNodes.length > 500) {
chatPane.removeChild(chatPane.firstChild);
}
chatPane.scrollTop = chatPane.scrollHeight;
}
</script>
</head>
<body onload="init()">
<div id="chatPane"></div>
<div>
<input type="text" id="outgoing" style="width:340px" onkeydown="if (event.keyCode == 13) sendMessage()"/>
<input type="submit" value="Send" style="width:60px" onclick="sendMessage()"/>
</div>
</body>
</html>
No comments:
Post a Comment