⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chat.js

📁 jetty SERVER連接資料庫用的軟體
💻 JS
字号:
dojo.require("dojox.cometd");dojo.require("dojox.cometd.timestamp");dojo.require("dojox.cometd.ack");var room = {	_last: "",	_username: null,	_connected: true,		join: function(name){			if (name == null || name.length == 0) {			alert('Please enter a username!');			return;		}				dojox.cometd.ackEnabled = (dojo.query("#ackInit").attr("checked") == "true");				var loc = (new String(document.location).replace(/http:\/\/[^\/]*/, '').replace(/\/examples\/.*$/, '')) +		"/cometd";		dojox.cometd.init(loc);		// For x-domain test change line above to:		// dojox.cometd.init("http://127.0.0.1:8080/cometd/cometd");		this._connected = true;				this._username = name;		dojo.addClass("join", "hidden");		dojo.removeClass("joined", "hidden");		dojo.byId("phrase").focus();				// subscribe and join		dojox.cometd.startBatch();		dojox.cometd.subscribe("/chat/demo", room, "_chat");		dojox.cometd.publish("/chat/demo", {			user: room._username,			join: true,			chat: room._username + " has joined"		});		dojox.cometd.endBatch();				// handle cometd failures while in the room		if (room._meta) {			dojo.unsubscribe(room._meta, null, null);		}		room._meta = dojo.subscribe("/cometd/meta", this, function(e){			// console.debug(e);			if (e.action == "handshake") {				if (e.reestablish) {					if (e.successful) {						dojox.cometd.subscribe("/chat/demo", room, "_chat");						dojox.cometd.publish("/chat/demo", {							user: room._username,							join: true,							chat: room._username + " has re-joined"						});					}					room._chat({						data: {							join: true,							user: "SERVER",							chat: "handshake " + e.successful ? "Handshake OK" : "Failed"						}					});				}			} else if (e.action == "connect") {				if (e.successful && !this._connected) {					room._chat({						data: {							join: true,							user: "SERVER",							chat: "reconnected!"						}					});				}				if (!e.successful && this._connected) {					room._chat({						data: {							leave: true,							user: "SERVER",							chat: "disconnected!"						}					});				}				this._connected = e.successful;			}		});	},		leave: function(){		if (!room._username) {			return;		}				if (room._meta) {			dojo.unsubscribe(room._meta);		}		room._meta = null;				dojox.cometd.startBatch();		dojox.cometd.unsubscribe("/chat/demo", room, "_chat");		dojox.cometd.publish("/chat/demo", {			user: room._username,			leave: true,			chat: room._username + " has left"		});		dojox.cometd.endBatch();				// switch the input form		dojo.removeClass("join", "hidden");		dojo.addClass("joined", "hidden");				dojo.byId("username").focus();		room._username = null;		dojox.cometd.disconnect();		dojo.byId('members').innerHTML = "";	},		chat: function(text){		if (!text || !text.length) {			return false;		}		var colons = text.indexOf("::");		if (colons > 0) {			dojox.cometd.publish("/service/privatechat", {				room: "/chat/demo", // This should be replaced by the room name				user: room._username,				chat: text.substring(colons + 2),				peer: text.substring(0, colons)			});		} else {			dojox.cometd.publish("/chat/demo", {				user: room._username,				chat: text			});		}	},		_chat: function(message){		if (!message.data) {			// console.debug("bad message format " + message);			return;		}				if (message.data instanceof Array) {			var members = dojo.byId('members');			var list = "";			for (var i in message.data) 				list += message.data[i] + "<br/>";			members.innerHTML = list;		} else {					var chat = dojo.byId('chat');			var from = message.data.user;			var membership = message.data.join || message.data.leave;			var text = message.data.chat;			if (!text) 				return;						if (!membership && from == room._last) {				from = "...";			} else {				room._last = from;				from += ":";			}						if (membership) {				chat.innerHTML += "<span class=\"membership\"><span class=\"from\">" + from + "&nbsp;</span><span class=\"text\">" + text + "</span></span><br/>";				room._last = "";			} else if (message.data.scope == "private") {				chat.innerHTML += "<span class=\"private\"><span class=\"from\">" + from + "&nbsp;</span><span class=\"text\">[private]&nbsp;" + text + "</span></span><br/>";			} else {				chat.innerHTML += "<span class=\"from\">" + from + "&nbsp;</span><span class=\"text\">" + text + "</span><br/>";			}			chat.scrollTop = chat.scrollHeight - chat.clientHeight;		}	},		_init: function(){		dojo.removeClass("join", "hidden");		dojo.addClass("joined", "hidden");				dojo.byId('username').focus();				dojo.query("#username").attr({			"autocomplete": "OFF"		}).onkeyup(function(e){			if (e.keyCode == dojo.keys.ENTER) {				room.join(dojo.byId('username').value);								return false;			}			return true;		});				dojo.query("#joinB").onclick(function(e){			room.join(dojo.byId('username').value);			e.preventDefault();		});				dojo.query("#phrase").attr({			"autocomplete": "OFF"		}).onkeyup(function(e){			if (e.keyCode == dojo.keys.ENTER) {				room.chat(dojo.byId('phrase').value);				dojo.byId('phrase').value = '';				e.preventDefault();			}		});				dojo.query("#sendB").onclick(function(e){			room.chat(dojo.byId('phrase').value);			dojo.byId('phrase').value = '';		});				dojo.query("#leaveB").onclick(room, "leave");			}};dojo.addOnLoad(room, "_init");dojo.addOnUnload(room, "leave");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -