nodejs如何實現TCP服務器端和客戶端聊天功能-創(chuàng)新互聯

這篇文章主要介紹了nodejs如何實現TCP服務器端和客戶端聊天功能,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯長期為數千家客戶提供的網站建設服務,團隊從業(yè)經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯網生態(tài)環(huán)境。為永靖企業(yè)提供專業(yè)的做網站、網站設計,永靖網站改版等技術服務。擁有十載豐富建站經驗和眾多成功案例,為您定制開發(fā)。

具體如下:

服務器端

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流來接受用戶的鍵盤輸入,這個可讀流初始化時處于暫停狀態(tài),調用流上的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如何實現TCP服務器端和客戶端聊天功能”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯成都網站設計公司,關注創(chuàng)新互聯成都網站設計公司行業(yè)資訊頻道,更多相關知識等著你來學習!

另外有需要云服務器可以了解下創(chuàng)新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、網站設計器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

文章名稱:nodejs如何實現TCP服務器端和客戶端聊天功能-創(chuàng)新互聯
路徑分享:http://muchs.cn/article16/dcodgg.html

成都網站建設公司_創(chuàng)新互聯,為您提供軟件開發(fā)、外貿網站建設建站公司、網站制作、網站內鏈、云服務器

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

網站建設網站維護公司