标签:
1.使用nodejs-websocket//引入nodejs-websocket var ws = require(“nodejs-websocket”); //调用createServer方法创建服务器,回调函数中的conn是connection的实例 var server = ws.create(function(conn){ console.log(“New connection”); //监听text事件,text事件每当从服务器收到文本类型数据时触发,回调函数的参数为传过来的字符串 conn.on(“text”, function(str){ console.log(“Received ” + str); }); //监听close事件,每次断开连接时触发 conn.on(“close”, function(code, reason){ console.log(“Connection closed”); }) }).listen(8888);
oConnect.onclick=function(){ ws=new WebSocket('ws://localhost:5000'); ws.onopen=function(){ oUl.innerHTML+="<li>客户端已连接</li>"; } ws.onmessage=function(evt){ oUl.innerHTML+="<li>"+evt.data+"</li>"; } ws.onclose=function(){ oUl.innerHTML+="<li>客户端已断开连接</li>"; }; ws.onerror=function(evt){ oUl.innerHTML+="<li>"+evt.data+"</li>"; }; }; oSend.onclick=function(){ if(ws){ ws.send(oInput.value); } }(3)服务器端js:
/* websocket支持两种类型的数据传输:text类型和binary类型,其中二进制数据是通过流的模式发送和读取的 */ var app=require('http').createServer(handler); //为了简化代码,将服务器创建具体代码放到handler函数中 var ws=require('nodejs-websocket'); var fs=require('fs'); app.listen(8888); function handler(req,res){ //__dirname返回该文件所在的当前目录。调用readFile方法进行文件读取 fs.readFile(__dirname+'/index.html',function(err,data){ if(err){ res.writeHead(500); return res.end('error '); } res.writeHead(200); res.end(data); }); } //以上步骤成功在8888端口渲染出相应的html界面 //conn是对应的connection的实例 var server = ws.createServer(function(conn){ console.log('new conneciton'); //监听text事件,每当收到文本时触发 conn.on("text",function(str){ broadcast(server,str); }); //当任何一端关闭连接时触发,这里就是在控制台输出connection closed conn.on("close",function(code,reason){ console.log('connection closed'); }) }).listen(5000); //注意这里的listen监听是刚才开通的那个服务器的端口,客户端将消息发送到这里处理 function broadcast(server, msg) { //server.connections是一个数组,包含所有连接进来的客户端 server.connections.forEach(function (conn) { //connection.sendText方法可以发送指定的内容到客户端,传入一个字符串 //这里为遍历每一个客户端为其发送内容 conn.sendText(msg); }) }
WebSocket+node.js创建即时通信的Web聊天服务器
标签:
原文地址:http://blog.csdn.net/fareise/article/details/52142640