基于WS模块实现WebSocket聊天功能的nodejs方法
本文通过一个实例描述了nodejs如何实现基于WS模块的WebSocket聊天功能。分享给大家参考,如下:
有很多WebSocket模块,所以我选择了一个简单的模块来实现。
工具:崇高
技术:Node.js指的是模块ws
最终效果如下
本来打算做一个网络画板,因为忘记了工作,在这里简单实现了群聊功能
没什么好介绍的,网上代码案例太多了(新手遇到的主要问题可能是节点导入模块问题)
介绍安装模块:
找到安装节点目录,输入npm目录并运行cmd输入
Npminstall-savews源文件,最好放在npm目录下,可以参考一下(我也是新手,大家见谅)然后执行节点源文件. js来访问;
源代码:保存为js文件
//https://github.com/web sockets/ws/blob/master/doc/ws . MD # new-wsserver options-callbackvar WebSocketServer=require(' ws ')。服务器,Wss=new web socket server({ port : 3000,//侦听接口verify client : socket verify//可选,验证连接功能});函数SocketVerify(info){ console . log(info . origin);console . log(info . req . t);console . log(info . secure);//console . log(info . origin);//var origin=info.origin.match(/^(:\:\/\/)([^\/] )/);//if(origin . length=3 origin[2]==' blog . lookia . me '){//返回true//如果是来自blog .珞珈. me的连接,接受//} //console.log ('connection ',origin[2]);返回真;//否则,拒绝//传入的info参数将包含大量关于此连接的信息。可以在这里使用console.log(info)查看并选择如何验证连接}//broadcast WSS.broadcast=函数broadcast (s,ws){//console . log(ws);//调试器;wss.clients.forEach(函数每个(client) { //if (typeof client.user!=' undefined '){ if(s==1){ client . send(ws . name ' : ' ws . msg);} if(s==0){ client.send(ws“退出聊天室”);} //} });};//初始化WSS.on ('connection ',function(ws){//console . log(ws . clients . session);//console.log ('online number ',WSS . clients . length);Ws.send('您是' wss.clients.length '位');//发送消息ws.on ('message ',function (jsonstr,flags){ varobj=eval('(' jsonstr ')');//console . log(obj);this.user=objif (typeof this.user.msg!='undefined') { wss.broadcast(1,obj);} });//退出ws.on ('close ',函数(close){尝试{wss.broadcast (0,this . user . name)};}catch(e){ console.log('页面已刷新');} });});Html前端源代码:
!DOCTYPE htmlhtmlhead元字符集='utf-8 '元http-equiv=' X-UA-兼容'内容=' IE=边'标题聊天/title link rel='样式表href='脚本语言=' JavaScript ' src=' http :http://代码。jquery。com/jquery-1。11 .0 .js /脚本脚本类型=' text/JavaScript '/脚本/头像类型=' text/CSS ' media=' screen ' div { border : 1px solid # cccccccc;宽度: 500像素;最小高度: 100像素;}/stylebody div id='show' /div输入类型=' text ' id=' message ' name=' value=' placeholder='输入类型=' text ' id=' name ' value=' placeholder='昵称;a href=' JavaScript : void(0)' rel='外部无跟随' rel='外部无跟随' onclick=' send()'发送/a a href=' JavaScript : void(0)' rel='外部无跟随' rel='外部无跟随' onclick=' exit()'退出/a!-输入类型=' text ' id=' token ' name=' value=' placeholder=' readonly=' false '-/body脚本类型=' text/JavaScript ' var ws=new WebSocket(' ws ://127。0 .0 .1:3000?t=test’);ws。onopen=function(){ console。日志('连接状态,ws);$('#show ').html(")连接状态;ws。readystate '/br ');控制台。日志(“打开”);ws。打开(“开始”);};ws。on message=function(evt){//console。日志(evt。数据)//警报(evt。数据);$('#show ').追加(evt。data '/br ');};ws。onclose=函数(evt){控制台。日志(' WebSocketCosed!');控制台。日志(evt);};ws。onerror=函数(evt){控制台。日志(' WebSocketError!');};函数send() { var msg=$('#message ').val();var key=$('#token ').val();var name=$('#name ').val();var str='{name:'' name ' ',msg:'' msg ' ',key: ' ' key ' ' }console.log('发送,str);ws。发送(字符串);};函数exit(){ var r=ws。close();console.log('退出,r);}/脚本/html聊天中没有做太多验证,名字可以随意改动,
参考
https://github.com/websockets/ws
https://github.com/websockets/ws/blob/master/doc/ws.md
希望本文所述对大家开发程序设计有所帮助。
版权声明:基于WS模块实现WebSocket聊天功能的nodejs方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。