nodejs如何实现tcp服务器端和客户端聊天功能-亚博电竞手机版
开发技术
2021年07月09日 21:18
0
这篇文章主要介绍了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服务器端和客户端聊天功能”这篇文章对大家有帮助,同时也希望大家多多支持恰卡编程网,关注恰卡编程网行业资讯频道,更多相关知识等着你来学习!
展开全文