最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nodejs簡單實現(xiàn)TCP服務(wù)器端和客戶端的聊天功能示例

 更新時間:2018年01月04日 09:19:16   作者:wwwjiahuan  
這篇文章主要介紹了nodejs簡單實現(xiàn)TCP服務(wù)器端和客戶端的聊天功能,結(jié)合實例形式分析了nodejs基于TCP協(xié)議實現(xiàn)的聊天程序客戶端與服務(wù)器端具體步驟與相關(guān)操作技巧,代碼備有較為詳盡的注釋便于理解,需要的朋友可以參考下

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

服務(wù)器端

var net = require('net');
var server = net.createServer();
//聚合所有客戶端
var sockets = [];
//接受新的客戶端連接
server.on('connection', function(socket){
  console.log('got a new connection');
  sockets.push(socket);
  //從連接中讀取數(shù)據(jù)
  socket.on('data', function(data){
    console.log('got data:', data);
    //廣播數(shù)據(jù)
    //每當(dāng)一個已連接的用戶輸入數(shù)據(jù),就將這些數(shù)據(jù)廣播給其他所有已連接的用戶
    sockets.forEach(function(otherSocket){
      if (otherSocket !== socket){
        otherSocket.write(data);
      }
    });
    //刪除被關(guān)閉的連接
    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;  //記錄重新連接的次數(shù)
var maxRetries = 10;  //最多重新連接十次
process.stdin.resume(); //process.stdin流來接受用戶的鍵盤輸入,這個可讀流初始化時處于暫停狀態(tài),調(diào)用流上的resume()方法來恢復(fù)流
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);
  }
});
//連接時設(shè)置最多連接十次,并且開啟定時器三秒后再連接
(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程序設(shè)計有所幫助。

相關(guān)文章

  • Node.js 日志處理模塊log4js

    Node.js 日志處理模塊log4js

    今天和大家分享一下NodeJS中寫日志的一個常用第三方包:Log4js.下面我們就來詳細(xì)探討下吧
    2016-08-08
  • nodejs URL模塊操作URL相關(guān)方法介紹

    nodejs URL模塊操作URL相關(guān)方法介紹

    這篇文章主要介紹了nodejs URL模塊操作URL相關(guān)方法介紹,本文講解了parse方法、format方法、querystring方法等,需要的朋友可以參考下
    2015-03-03
  • 如何用npm命令刪除開發(fā)項目中的node_modules文件夾

    如何用npm命令刪除開發(fā)項目中的node_modules文件夾

    每個項目都會產(chǎn)生一個node_modules,每個node_modules少則幾十兆,多則幾百甚至上千兆,隨著時間的積累,維護(hù)項目的增加,整個項目目錄體積會越來越大,這篇文章主要給大家介紹了關(guān)于如何用npm命令刪除開發(fā)項目中的node_modules文件夾,需要的朋友可以參考下
    2023-12-12
  • Node.js?中的服務(wù)器相關(guān)概念(常見的服務(wù)器任務(wù))

    Node.js?中的服務(wù)器相關(guān)概念(常見的服務(wù)器任務(wù))

    Node.js?中,服務(wù)器的創(chuàng)建與管理是非常重要的內(nèi)容,Node.js?的非阻塞?I/O?特性使得它特別適合處理高并發(fā)的請求,本文將介紹一些與?Node.js?服務(wù)器相關(guān)的基本概念,包括?HTTP?服務(wù)器、請求和響應(yīng)、路由、以及如何處理常見的服務(wù)器任務(wù),感興趣的朋友一起看看吧
    2025-04-04
  • nodejs中各種加密算法的實現(xiàn)詳解

    nodejs中各種加密算法的實現(xiàn)詳解

    這篇文章主要給大家介紹了關(guān)于nodejs中各種加密算法的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用nodejs具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Nodejs之TCP服務(wù)端與客戶端聊天程序詳解

    Nodejs之TCP服務(wù)端與客戶端聊天程序詳解

    這篇文章主要為大家詳細(xì)介紹了Nodejs之TCP服務(wù)端與客戶端聊天程序,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Node.js 使用request模塊下載文件的實例

    Node.js 使用request模塊下載文件的實例

    今天小編就為大家分享一篇Node.js 使用request模塊下載文件的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 詳解如何優(yōu)雅在webpack項目實現(xiàn)mock服務(wù)器

    詳解如何優(yōu)雅在webpack項目實現(xiàn)mock服務(wù)器

    這篇文章主要為大家介紹了詳解如何優(yōu)雅在webpack項目實現(xiàn)mock服務(wù)器,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • 5分鐘教你用nodeJS手寫一個mock數(shù)據(jù)服務(wù)器的方法

    5分鐘教你用nodeJS手寫一個mock數(shù)據(jù)服務(wù)器的方法

    這篇文章主要介紹了5分鐘教你用nodeJS手寫一個mock數(shù)據(jù)服務(wù)器的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • node.js之基礎(chǔ)加密算法模塊crypto詳解

    node.js之基礎(chǔ)加密算法模塊crypto詳解

    這篇文章主要介紹了node.js之基礎(chǔ)加密算法模塊crypto詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09

最新評論

崇左市| 甘洛县| 肃北| 民县| 黄陵县| 梁平县| 上蔡县| 西峡县| 仲巴县| 金寨县| 广灵县| 周口市| 黔西县| 山阴县| 酒泉市| 丰城市| 门源| 石城县| 吉林省| 张家川| 琼海市| 灯塔市| 麻阳| 贺兰县| 黔西| 泽普县| 海晏县| 册亨县| 韶关市| 达州市| 漾濞| 高邮市| 丰城市| 岐山县| 吕梁市| 长海县| 千阳县| 北宁市| 上高县| 象州县| 法库县|