[NodeJS]使用Node.js寫一個簡單的在線聊天室
發(fā)布時間:2017-03-26 11:17
本文關(guān)鍵詞:Node即學(xué)即用,由筆耕文化傳播整理發(fā)布。
聲明:教程來自《Node即學(xué)即用》。源碼案例均出自此書。博文僅為個人學(xué)習(xí)筆記。
第一步:創(chuàng)建一個聊天服務(wù)器。
首先,我們先來寫一個Server:
var net = require('net') var chatServer = net.createServer() chatServer.on('connection',function(client){ client.write('connection~~~\n') client.end() }) chatServer.listen(2333) console.log('Server') 可以使用telnet命令訪問服務(wù)器:
第二步:監(jiān)聽所有的連接請求
服務(wù)器源代碼:
var net = require('net') var chatServer = net.createServer() chatServer.on('connection',function(client){ client.write('Hello~~\n') client.on('data',function(data){ console.log(data); }) }) chatServer.listen(2333) console.log('Server') 這里添加了一個事件監(jiān)聽器client.on(),每當(dāng)client發(fā)送data的時候這個函數(shù)都會被調(diào)用。所以現(xiàn)在不論發(fā)送什么數(shù)據(jù),,服務(wù)器都會顯示出來:
但是這里有個問題:返回的內(nèi)容均為亂碼,因?yàn)镴S不能很好的處理二進(jìn)制數(shù)據(jù),所以Node增加了一個buffer庫來幫助服務(wù)器。
打印的字符實(shí)際上是16進(jìn)制的字節(jié)數(shù)據(jù),可以保持二進(jìn)制的格式,因?yàn)門CP和Telnet都能處理它們。
第三步:客戶端之間的通信:
var net = require('net') var chatServer = net.createServer() //服務(wù)器 var clientList = [] //客戶端數(shù)組 chatServer.on('connection',function(client){ client.write('Hello~Client~\n') clientList.push(client) client.on('data',function(data){ for (var i = 0; i < clientList.length; i++) { clientList[i].write(data) }; }) }) chatServer.listen(2333) console.log('Server') 這個就是一個最簡單的聊天服務(wù)器了,可以打開多個終端,輸入telnet localhost 2333訪問服務(wù)器。
下一步,改進(jìn)消息發(fā)送和顯示的方式,讓頁面更友善一些。
本文關(guān)鍵詞:Node即學(xué)即用,由筆耕文化傳播整理發(fā)布。
本文編號:268738
本文鏈接:http://sikaile.net/wenshubaike/mishujinen/268738.html
最近更新
教材專著