|
Jetty example source code file (chat.js)
The Jetty chat.js source code
dojo.require("dojox.cometd");
dojo.require("dojox.cometd.timestamp");
var room = {
_last: "",
_username: null,
_connected: true,
groupName: "whimsical",
join: function(name){
if(name == null || name.length==0 ){
alert('Please enter a username!');
}else{
dojox.cometd.init(new String(document.location).replace(/http:\/\/[^\/]*/,'').replace(/\/examples\/.*$/,'')+"/cometd");
// dojox.cometd.init("http://127.0.0.2:8080/cometd");
this._connected = true;
this._username = name;
dojo.byId('join').className='hidden';
dojo.byId('joined').className='';
dojo.byId('phrase').focus();
// subscribe and join
dojox.cometd.startBatch();
dojox.cometd.subscribe("/chat/demo", room, "_chat", { groupName: this.groupName});
dojox.cometd.publish("/chat/demo", {
user: room._username,
join: true,
chat : room._username+" has joined"
}, { groupName: this.groupName });
dojox.cometd.endBatch();
// handle cometd failures while in the room
room._meta = dojo.subscribe("/cometd/meta", this, function(event){
console.debug(event);
if(event.action == "handshake"){
room._chat({ data: {
join: true,
user:"SERVER",
chat:"reinitialized"
} });
dojox.cometd.subscribe("/chat/demo", room, "_chat", { groupName: this.groupName });
}else if(event.action == "connect"){
if(event.successful && !this._connected){
room._chat({ data: {
leave: true,
user: "SERVER",
chat: "reconnected!"
} });
}
if(!event.successful && this._connected){
room._chat({ data: {
leave: true,
user: "SERVER",
chat: "disconnected!"
} });
}
this._connected = event.successful;
}
}, {groupName: this.groupName });
}
},
leave: function(){
if(!room._username){
return;
}
if(room._meta){
dojo.unsubscribe(room._meta, null, null, { groupName: this.groupName });
}
room._meta=null;
dojox.cometd.startBatch();
dojox.cometd.unsubscribe("/chat/demo", room, "_chat", { groupName: this.groupName });
dojox.cometd.publish("/chat/demo", {
user: room._username,
leave: true,
chat : room._username+" has left"
}, { groupName: this.groupName });
dojox.cometd.endBatch();
// switch the input form
dojo.byId('join').className='';
dojo.byId('joined').className='hidden';
dojo.byId('username').focus();
room._username = null;
dojox.cometd.disconnect();
},
chat: function(text){
if(!text || !text.length){
return false;
}
dojox.cometd.publish("/chat/demo", { user: room._username, chat: text}, { groupName: this.groupName });
},
_chat: function(message){
var chat=dojo.byId('chat');
if(!message.data){
console.debug("bad message format "+message);
return;
}
var from=message.data.user;
var special=message.data.join || message.data.leave;
var text=message.data.chat;
if(!text){ return; }
if( !special && from == room._last ){
from="...";
}else{
room._last=from;
from+=":";
}
if(special){
chat.innerHTML += "<span class=\"alert\">"+from+" "+text+"
Other Jetty examples (source code examples)Here is a short list of links related to this Jetty chat.js source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.