HTML5之广播聊天室
- 服务器端广播文本
- 所有客户端都可以收到
--- 客户端
- 定义文本框
- 定义发送事件
textarea accesskey =t oninput="sendmsg();"
- 发送协议
ws:// 普通web-socket
wss:// 加密web-socket
客户端-创立连接
var ws,currentUser,ele; window.onload = function() { ws = new WebSocket("ws://my server:8887"); // 连接建立成功onopen事件会被调用 ws.onopen = function() { $("status").innerHTML = ‘online‘; $("status").style.color = ‘green‘; // 消息接受成功会唤起消息 ws.onmessage = function(e) { var msg; try { msg = JSON.parse(e.data); } catch (SyntaxError) { $("debug").innerHTML = "invalid message"; return false; } }
客户端-发送消息
function sendmsg() { ws.send($("ta").value); } // 关闭事件 ws.onclose = function(e){ $("status").innerHTML = ‘offline‘; $("status").style.color = ‘red‘; }; window.onunload = function(){ ws.close(); };
服务器端-创建连接
var ws = require(__dirname + ‘/lib/ws‘), server = ws.createServer(); var user_cols = {}; server.addListener ("connection", function(conn) { var h = conn._server.man ager.length*70; // 使用不同颜色标注用户ID user_cols[conn.id] = "hsl("+h+",100%,30%)"; var msg = {}; msg.user = conn.id; msg.color = user_cols[conn.id]; msg.text = "<em>一个新的用户加入聊天!</em>"; // 广播 conn.broadcast(JSO N.stringify(msg)); }
服务器端-监听广播
conn.addListener("message", function(message) { var msg = {}; // 防注入处理 message = message.replace(/</g, "<"); message = message.replace(/>/g, ">"); msg.text = message; msg.user = conn.id; msg.color = user_cols[conn.id]; // 输出内容 conn.write(JSON.st ringify(msg)); // 广播 conn.broadcast(JSO N.stringify(msg)); }); });
服务器端-关闭
server.addListener("close", function(conn) { var msg = {}; msg.user = conn.id; msg.color = user_cols[conn.id]; msg.text = "<em>一个用户已经离开了聊天!</em>"; conn.broadcast(JSO N.stringify(msg)); }); server.listen(8887);
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。