nodejs如何实现TCP服务器端和客户端聊天功能
作者
这篇文章主要介绍了nodejs如何实现TCP服务器端和客户端聊天功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
具体如下:
服务器端
varnet=require('net'); varserver=net.createServer(); //聚合所有客户端 varsockets=[]; //接受新的客户端连接 server.on('connection',function(socket){ console.log('gotanewconnection'); sockets.push(socket); //从连接中读取数据 socket.on('data',function(data){ console.log('gotdata:',data); //广播数据 //每当一个已连接的用户输入数据,就将这些数据广播给其他所有已连接的用户 sockets.forEach(function(otherSocket){ if(otherSocket!==socket){ otherSocket.write(data); } }); //删除被关闭的连接 socket.on('close',function(){ console.log('connectionclosed'); varindex=sockets.indexOf(socket); sockets.splice(index,1); }); }); }); server.on('error',function(err){ console.log('Servererror:',err.message); }); server.on('close',function(){ console.log('Serverclosed'); }); server.listen(4000);
客户端
varnet=require('net'); varport=4000; varquitting=false; varconn; varretryTimeout=3000;//三秒,定义三秒后重新连接 varretriedTimes=0;//记录重新连接的次数 varmaxRetries=10;//最多重新连接十次 process.stdin.resume();//process.stdin流来接受用户的键盘输入,这个可读流初始化时处于暂停状态,调用流上的resume()方法来恢复流 process.stdin.on('data',function(data){ if(data.toString().trim().toLowerCase()==='quit'){ quitting=true; console.log('quitting'); conn.end(); process.stdin.pause(); }else{ conn.write(data); } }); //连接时设置最多连接十次,并且开启定时器三秒后再连接 (functionconnect(){ functionreconnect(){ if(retriedTimes>=maxRetries){ thrownewError('Maxretrieshavebeenexceeded,Igiveup.'); } retriedTimes+=1; setTimeout(connect,retryTimeout); } conn=net.createConnection(port); conn.on('connect',function(){ retriedTimes=0; console.log('connecttoserver'); }); conn.on('error',function(err){ console.log('Errorinconnection:',err); }); conn.on('close',function(){ if(!quitting){ console.log('connectiongotclosed,willtrytoreconnect'); reconnect(); } }); //打印 conn.pipe(process.stdout,{end:false}); })();
感谢你能够认真阅读完这篇文章,希望小编分享的“nodejs如何实现TCP服务器端和客户端聊天功能”这篇文章对大家有帮助,同时也希望大家多多支持恰卡编程网,关注恰卡编程网行业资讯频道,更多相关知识等着你来学习!
目录
推荐阅读
-
NodeJS怎么实现单点登录
-
怎么用Vue+NodeJS实现大文件上传
-
node中的buffer有什么用
node中的buffer有什么用本文小编为大家详细介绍“node中...
-
node中multer的概念是什么
node中multer的概念是什么这篇文章主要介绍“node中mu...
-
nodejs怎么读取文件夹目录的内容
nodejs怎么读取文件夹目录的内容小编给大家分享一下nodejs...
-
nodejs如何结合socket.io实现websocket通信功能
这篇文章主要介绍nodejs如何结合socket.io实现websocket通信功能,文中介绍的非常详细,具有一定的参考价值,感兴...
-
nodejs如何结合Socket.IO实现的即时通讯功能
-
Nodejs能够应用于什么场景
这篇文章给大家分享的是有关Nodejs能够应用于什么场景的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。...
-
Nodejs +Websocket如何实现指定发送及群聊
-
NodeJs内存占用过高如何排查
0 条评论
本站已关闭游客评论,请登录或者注册后再评论吧~