這篇文章主要介紹了nodejs如何實(shí)現(xiàn)TCP服務(wù)器端和客戶(hù)端聊天功能,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)長(zhǎng)期為數(shù)千家客戶(hù)提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為永靖企業(yè)提供專(zhuān)業(yè)的做網(wǎng)站、網(wǎng)站設(shè)計(jì),永靖網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。具體如下:
服務(wù)器端
var net = require('net'); var server = net.createServer(); //聚合所有客戶(hù)端 var sockets = []; //接受新的客戶(hù)端連接 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è)已連接的用戶(hù)輸入數(shù)據(jù),就將這些數(shù)據(jù)廣播給其他所有已連接的用戶(hù) 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);
客戶(hù)端
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流來(lái)接受用戶(hù)的鍵盤(pán)輸入,這個(gè)可讀流初始化時(shí)處于暫停狀態(tài),調(diào)用流上的resume()方法來(lái)恢復(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è)置最多連接十次,并且開(kāi)啟定時(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}); })();
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“nodejs如何實(shí)現(xiàn)TCP服務(wù)器端和客戶(hù)端聊天功能”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司,關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、網(wǎng)站設(shè)計(jì)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。
文章名稱(chēng):nodejs如何實(shí)現(xiàn)TCP服務(wù)器端和客戶(hù)端聊天功能-創(chuàng)新互聯(lián)
路徑分享:http://vcdvsql.cn/article16/dcodgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)、外貿(mào)網(wǎng)站建設(shè)、建站公司、網(wǎng)站制作、網(wǎng)站內(nèi)鏈、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容