国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

nodejs簡單實現TCP服務器端和客戶端的聊天功能示例

2024-05-06 15:22:57
字體:
來源:轉載
供稿:網友

本文實例講述了nodejs簡單實現TCP服務器端和客戶端的聊天功能。分享給大家供大家參考,具體如下:

服務器端

var net = require('net');var server = net.createServer();//聚合所有客戶端var sockets = [];//接受新的客戶端連接server.on('connection', function(socket){  console.log('got a new connection');  sockets.push(socket);  //從連接中讀取數據  socket.on('data', function(data){    console.log('got data:', data);    //廣播數據    //每當一個已連接的用戶輸入數據,就將這些數據廣播給其他所有已連接的用戶    sockets.forEach(function(otherSocket){      if (otherSocket !== socket){        otherSocket.write(data);      }    });    //刪除被關閉的連接    socket.on('close', function(){      console.log('connection closed');      var index = sockets.indexOf(socket);      sockets.splice(index, 1);    });  });});server.on('error', function(err){  console.log('Server error:', err.message);});server.on('close', function(){  console.log('Server closed');});server.listen(4000);

客戶端

var net = require('net');var port = 4000;var quitting = false;var conn;var retryTimeout = 3000;  //三秒,定義三秒后重新連接var retriedTimes = 0;  //記錄重新連接的次數var maxRetries = 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);  }});//連接時設置最多連接十次,并且開啟定時器三秒后再連接(function connect() {  function reconnect() {    if (retriedTimes >= maxRetries) {      throw new Error('Max retries have been exceeded, I give up.');    }    retriedTimes +=1;    setTimeout(connect, retryTimeout);  }  conn = net.createConnection(port);  conn.on('connect', function() {    retriedTimes = 0;    console.log('connect to server');  });  conn.on('error', function(err) {    console.log('Error in connection:', err);  });  conn.on('close', function() {    if(! quitting) {      console.log('connection got closed, will try to reconnect');      reconnect();    }  });  //打印  conn.pipe(process.stdout, {end: false});})();

希望本文所述對大家nodejs程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 六盘水市| 肇源县| 丰县| 孙吴县| 共和县| 敖汉旗| 盐边县| 上高县| 河北区| 陆丰市| 霸州市| 栖霞市| 安多县| 贵德县| 龙海市| 沅江市| 宁陕县| 方山县| 玉溪市| 报价| 安宁市| 柘荣县| 潼关县| 赤水市| 青铜峡市| 莱阳市| 株洲市| 土默特左旗| 朝阳市| 潮州市| 天镇县| 永昌县| 静乐县| 郑州市| 仙桃市| 苏尼特右旗| 泾源县| 砀山县| 岚皋县| 新沂市| 北海市|