📄 chat.js
字号:
// **********************************************************************//// Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved.//// This copy of Chat Demo is licensed to you under the terms// described in the CHAT_DEMO_LICENSE file included in this// distribution.//// **********************************************************************var maxMessageSize = 1024;var coordinator = 0;function formatDate(timestamp){ d = new Date(); d.setTime(timestamp); return d.toLocaleTimeString();}function formatUsername(name){ if(name.length <= 2) { return name; } return name.substring(0, 1).toUpperCase() + name.substring(1, name.length).toLowerCase();}function clearChilds(id){ var childs = $(id).childElements(); for(var i = 0; i < childs.length; i++) { childs[i].remove(); }}function stripHtml(input){ var output = ""; for(var cont = 0; cont < input.length; cont++) { switch(input.charAt(cont)) { case '&': { output += "&"; break; } case '"': { output += """; break; } case '\'': { output += "'"; break; } case '<': { output += "<"; break; } case '>': { output += ">"; break; } case '\r': case '\n': case '\v': case '\f': case '\t': { output += " "; break; } default: { output += input.charAt(cont); break; } } } return output;}function isNumber(o){ return "number" == typeof o;}var Coordinator = Class.create({ initialize:function(chatView) { this._chatView = chatView; this._updater = 0; this._init = false; this.setConnected(false); coordinator = this; }, login:function(name, password) { var username = name; var params = new Hash(); params.set('action', 'login'); params.set('username', name); params.set('password', password); var coordinator = this; var opts = { contentType:'application/x-www-form-urlencoded', method:'post', encoding:'UTF-8', parameters:params, onComplete:function(transport) { Element.hide('connectingContainer'); Element.show('loginContainer'); if(transport.status != 200) { coordinator.setError("Connection with the web server failed:", "HTTP status code: " + transport.status); return; } var response = transport.responseText.evalJSON(true); if( response.jsontype == 'Session') { coordinator.setSessionId(response.id); coordinator.setConnected(true); coordinator._username = formatUsername(username); return; } if(response.jsontype == "PollingChat_CannotCreateSessionException") { coordinator._chatView.appendError("Login failed:", response.reason); return; } if(response.jsontype == "Ice_UnknownLocalException") { coordinator._chatView.appendError("Communication with server failed (Ice_UnknownLocalException)", response.unknown); return; } coordinator._chatView.appendError("Communication with server failed:", transport.responseText); } }; new Ajax.Request('Chat.php', opts); }, logout:function() { if(this.updater) { this.updater.stop(); Chat.updater = 0; } var params = new Hash(); params.set('id', this._sessionId); params.set('action','logout'); var opts = { contentType:'application/x-www-form-urlencoded', method:'post', encoding:'UTF-8', parameters:params, onComplete: function(transport) { } }; new Ajax.Request('Chat.php', opts); this.setConnected(false); }, getInitialUsers:function() { if(coordinator._connected) { var params = new Hash(); params.set('id', this._sessionId); params.set('action','getInitialUsers'); var opts = { contentType:'application/x-www-form-urlencoded', method:'post', encoding:'UTF-8', parameters:params, onComplete:function(transport) { if(transport.status != 200) { coordinator.connectionLost("<b>Connection with the web server failed: " + transport.status + "</b>"); return; } var response = transport.responseText.evalJSON(true); if(response.jsontype !== undefined) { if(response.jsontype == "Ice_UnknownLocalException") { coordinator.connectionLost("(Ice_UnknownLocalException) " + response.unknown); return; } coordinator.connectionLost(transport.responseText); return; } if(!isNumber(response.length)) { coordinator.connectionLost(transport.responseText); return; } for(var i = 0; i < response.length; i++) { var user = new Element('li', { 'id': '_' + response[i] }).update(response[i]); $('userList').insert(user); } coordinator._init = true; coordinator.getUpdates(); } } new Ajax.Request('Chat.php', opts); } }, getUpdates:function() { if(!coordinator._connected || !coordinator._init) { return; } var params = new Hash(); params.set('id', coordinator._sessionId); params.set('action','getUpdates'); var opts = { contentType:'application/x-www-form-urlencoded', method:'post', encoding:'UTF-8', parameters:params, onComplete:function(transport) { if(!coordinator._connected) { return; } if(transport.status != 200) { coordinator.connectionLost("<b>Could not contact web server HTTP status code: " + transport.status + "</b>"); return; } var response = transport.responseText.evalJSON(true); if(response.jsontype !== undefined) { if(response.jsontype == "Ice_UnknownLocalException") { coordinator.connectionLost("(Ice_UnknownLocalException) " + response.unknown); return; } coordinator.connectionLost(transport.responseText); return; } if(!isNumber(response.length)) { coordinator.connectionLost(transport.responseText); return; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -