NodeJs实现WebSocket即时通讯

 

  

  注明:本文为原创随笔,如需转发,请注解来源WAxes,感激!

  近年来都在上学HTML5,做canvas游戏之类的,发掘HTML5中除了canvas那些强盛的工具外,还也可能有WebSocket也很值得注意。能够用来做双屏相互影响游戏,何为双屏相互影响娱乐?正是经过运动端设备来决定PC端网游。那样的话将要用到实时广播发表了,而WebSocket无疑是最合适的。WebSocket相较于HTTP来讲,有无数的助益,主要表今后WebSocket只创建二个TCP连接,能够积极推送数据到顾客端,并且还也许有更轻量级的协商头,收缩数额传送量。所以WebSocket一时半刻来讲是实时报纸发表的一流协议了。

【game1代码】:通过点击获取两个框的开始和结果,传到服务器

  至于服务器语言接收nodeJs,一是因为自身是做前端的,对javascript相比较熟谙,比较于别的后台语言,自然会更爱好nodeJs了,二是NodeJs自个儿事件驱动的法子很短于与大批量客户端保持高产出的三番五次。所以就筛选NodeJs了。

  【服务端代码】,依据顾客端传来的消息推断哪些是game1,哪个是game2,保存connection对象。

 

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> .kuang{text-align: center;margin-top:200px;} #mess{text-align: center} .value{width: 200px;height:200px;border:1px solid;text-align: center;line-height: 200px;display: inline-block;} </style> </head> <body> <div id="mess">正在连接...</div> <div class="kuang"> <div class="value" id="value1">小明小明</div> <div class="value" id="value2">大胸大胸</div> <div class="value" id="value3">小张小张</div> </div> <script> var mess = document.getElementById("mess"); if(window.WebSocket){ var ws = new WebSocket('ws://192.168.17.80:8001'); ws.onopen = function(e){ console.log("连接服务器成功"); ws.send("game1"); } ws.onclose = function(e){ console.log("服务器关闭"); } ws.onerror = function(){ console.log("连接出错"); } ws.onmessage = function(e){ mess.innerHTML = "连接成功" document.querySelector(".kuang").onclick = function(e){ var time = new Date(); ws.send(time + " game1点击了“" + e.target.innerHTML+"”"); } } } </script> </body> </html>

  服务器的达成比异常的粗略,先装叁个nodeJs的模块,叫nodejs-websocket ,
直接在nodeJs命令行中敲入:npm install
nodejs-websocket回车就能够安装好了,然后就足以起首另立门户服务器了,因为有了nodejs-websocket模块,所以广大专门的职业都休想大家温馨做,直接调用外人封装好的不二等秘书技就能够了:

代码特别轻松:超级轻便看懂,nodejs-WebSocket的调用也相当轻便,具体nodejs-websocket的API可以看

 

【game2代码】:获取服务推送来的新闻,况且展现

var ws = require("nodejs-websocket"); console.log("开始建立连接...") var game1 = null,game2 = null , game1Ready = false , game2Ready = false; var server = ws.createServer(function(conn){ conn.on("text", function (str) { console.log("收到的信息为:"+str) if(str==="game1"){ game1 = conn; game1Ready = true; conn.sendText("success"); } if(str==="game2"){ game2 = conn; game2Ready = true; } if(game1Ready&&game2Ready){ game2.sendText(str); } conn.sendText(str) }) conn.on("close", function (code, reason) { console.log("关闭连接") }); conn.on("error", function (code, reason) { console.log("异常关闭") }); }).listen(8001) console.log("WebSocket建立完毕")
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> .kuang{text-align: center;margin-top:200px;} #mess{text-align: center} </style> </head> <body> <div id="mess"></div> <script> var mess = document.getElementById("mess"); if(window.WebSocket){ var ws = new WebSocket('ws://192.168.17.80:8001'); ws.onopen = function(e){ console.log("连接服务器成功"); ws.send("game2"); } ws.onclose = function(e){ console.log("服务器关闭"); } ws.onerror = function(){ console.log("连接出错"); } ws.onmessage = function(e){ var time = new Date(); mess.innerHTML+=time+"的消息:"+e.data+"<br>" } } </script> </body> </html>

运作截图:图片 1

 

相关文章

Comment ()
评论是一种美德,说点什么吧,否则我会恨你的。。。