欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

本文實(shí)例講述了nodejs簡單實(shí)現(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)一個(gè)已連接的用戶輸入數(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流來接受用戶的鍵盤輸入,這個(gè)可讀流初始化時(shí)處于暫停狀態(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í)設(shè)置最多連接十次,并且開啟定時(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});
})();

希望本文所述對(duì)大家nodejs程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • nodejs的路徑問題的解決

    nodejs的路徑問題的解決

    這篇文章主要介紹了nodejs的路徑問題的解決,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-06-06
  • npm?install安裝失敗報(bào)錯(cuò):The?operation?was?rejected?by?your?operating?system

    npm?install安裝失敗報(bào)錯(cuò):The?operation?was?rejected?by?your?

    這篇文章主要給大家介紹了關(guān)于npm?install安裝失敗報(bào)錯(cuò):The?operation?was?rejected?by?your?operating?system的相關(guān)資料,文中給出了多種解決方法供大家參考學(xué)習(xí),需要的朋友可以參考下
    2023-04-04
  • 刪除node_modules文件夾太慢的解決方案

    刪除node_modules文件夾太慢的解決方案

    這篇文章主要介紹了刪除node_modules文件夾太慢的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Nodejs express框架一個(gè)工程中同時(shí)使用ejs模版和jade模版

    Nodejs express框架一個(gè)工程中同時(shí)使用ejs模版和jade模版

    這篇文章主要介紹了Nodejs express框架一個(gè)工程中同時(shí)使用ejs模版和jade模版 的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • nodejs使用Express框架寫后端接口的全過程

    nodejs使用Express框架寫后端接口的全過程

    最近學(xué)習(xí)了基于前后端分離的開發(fā)模式,我前端使用Vue框架,后端使用nodejs開發(fā)API接口,下面這篇文章主要給大家介紹了關(guān)于nodejs使用Express框架寫后端接口的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • 快速掌握Node.js模塊封裝及使用

    快速掌握Node.js模塊封裝及使用

    這篇文章主要為大家詳細(xì)介紹了Node.js模塊封裝及使用,幫助大家快速掌握Node.js模塊封裝及使用,感興趣的小伙伴們可以參考一下
    2016-03-03
  • 深入理解Node.js的HTTP模塊

    深入理解Node.js的HTTP模塊

    最近在工作中接觸到了Node.js標(biāo)準(zhǔn)庫提供了http模塊,所以這篇文章想總結(jié)下Node.js的HTTP模塊,方便大家和自己以后使用的時(shí)候參考借鑒。有需要的朋友們下面來一起看看吧。
    2016-10-10
  • Node.js使用gm拼裝sprite圖片

    Node.js使用gm拼裝sprite圖片

    這篇文章主要介紹了Node.js使用gm拼裝sprite圖片的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • nodejs遍歷文件夾下并操作HTML/CSS/JS/PNG/JPG的方法

    nodejs遍歷文件夾下并操作HTML/CSS/JS/PNG/JPG的方法

    這篇文章主要介紹了nodejs遍歷文件夾下并操作HTML/CSS/JS/PNG/JPG的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • 使用Fetch API執(zhí)行GraphQL查詢和變體問題

    使用Fetch API執(zhí)行GraphQL查詢和變體問題

    這篇文章主要介紹了使用Fetch API執(zhí)行GraphQL查詢和變體問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04

最新評(píng)論