WebSocket 通讯(node.js)

来源:互联网 发布:笔记本mac地址修改 编辑:程序博客网 时间:2024/06/05 06:07

个人原创,欢迎转载,转载请注明出处http://blog.csdn.net/bud_icelf       QQ:909648986


WebSocket 通讯(node.js)


什么是WebSocket

WebSocket 规范的目标是在浏览器中实现和服务器端双向通信。

例子1 WebSocket 实现 html5 与 Node.js双向通信

客户端代码
<!DOCTYPE html><html><head><meta charset="gbk"></head><body>state:<b id="state"></b></br>info:<b id="info">empty</b><script>var socket = new WebSocket("ws://localhost:8002");socket.onopen=function(event){document.getElementById("state").innerHTML="connected";socket.send("this is a test.");}socket.onmessage=function(message){document.getElementById("info").innerHTML=message.data;};socket.onclose=function(event){ document.getElementById("state").innerHTML="disconnected";}; socket.onerror=function(event){ document.getElementById("state").innerHTML="error";}; </script></body></html>



var socket = new WebSocket("ws://localhost:8002");
创建WebSocket对象,参数一为链接的地址


socket.onopen,   socket.onmessage,    socket.onclose,    socket.onerror
分别是对  Socket打开,  信息传入,  Socket关闭,  Socket出错  的监听


socket.send("this is a test.");
Socket打开后,向服务器端发送信息,参数一为信息的内容.


服务器端代码,node.js的安装请参考  Node.js 简介与安装 
var ws=require(__dirname+"/lib/ws/server");var server=ws.createServer();server.addListener("connection",function(conn){console.log(conn.id+" connected.");server.broadcast("Welcome  "+conn.id);conn.addListener("message",function(message){console.log("get message from connection "+conn.id+":"+message);});});server.addListener("disconnect",function(conn){console.log(conn.id+" closed.");});server.addListener("error",function(){console.log("error.");});server.listen(8002);




访问http://github.com/miksago/node-websocket-server 点击Downloads下载ZIP文件
复制 node-websocket-server 包整个lib文件夹到当前文件所在位置


var ws=require(__dirname+"/lib/ws/server");
引用server模块,__dirname是当前文件的路径


var server=ws.createServer();
创建服务器


server.addListener("connection",function(conn){
});
conn.addListener("message",function(message){
});
server.addListener("disconnect",function(conn){
}
server.addListener("error",function(conn){
});
分别是 连接时,信息传入时,断开连接时,出错时 的事件处理


console.log(conn.id+" connected.");
在控制台输出信息.参数一为信息的内容


server.broadcast("Welcome  "+conn.id);
向所有连接中的客户端广播信息,.参数一为信息的内容.


server.listen(8002);
监听8002端口


效果显示

打开服务器端


打开客户端