node+socket實(shí)現(xiàn)簡(jiǎn)易聊天室功能
本文實(shí)例為大家分享了node+socket實(shí)現(xiàn)簡(jiǎn)易聊天室的具體代碼,供大家參考,具體內(nèi)容如下
服務(wù)端
const net = require('net') const server = net.createServer() //用戶列表 let clients = [] //監(jiān)聽(tīng)連接 server.on('connection',client=>{ client.on('data',(chunk)=>{ let data = chunk.toString() if(data.match(/login:(.*)/)){ let name = data.match(/login:(.*)/)[1] client.name = name clients.push(client) console.log(`用戶${name}上線`) }else{ for (const client of clients) { if(client.name!==JSON.parse(data).name){ client.write(data) } } } }) client.on('close',()=>{ console.log(`用戶${client.name}下線`) }) client.on('error',()=>{ console.log(`用戶${client.name}發(fā)生錯(cuò)誤`) }) }) server.on('error',(err)=>{ console.log('服務(wù)器錯(cuò)誤',err) }) server.on('close',()=>{ console.log('服務(wù)器關(guān)閉') }) server.listen(9527,()=>{ console.log("服務(wù)器開(kāi)啟") })
客戶端
const net = require('net') const readline = require('readline') //讀取輸入的信息 const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); //名字 const name = process.argv[2] //連接服務(wù)器 const client = net.createConnection({port:9527},()=>{ console.log(name+'連接到服務(wù)器'); client.write(`login:${name}`) client.name = name //開(kāi)始發(fā)送信息 sendMsg(client) }) client.on('data', (chunk) => { let data = JSON.parse(chunk.toString()) if(data){ console.log(`[${data.name}] : ${data.msg}`) } }); client.on('end', () => { console.log('已從服務(wù)器斷開(kāi)'); }); client.on('error', () => { console.log('服務(wù)器錯(cuò)誤'); }); //一直遞歸輸出 function sendMsg(client){ rl.question('',(line)=>{ client.write(JSON.stringify({ name:client.name, msg:line })) sendMsg(client) }) }
演示
服務(wù)端
客戶端1
客戶端2
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- NodeJS實(shí)現(xiàn)一個(gè)聊天室功能
- nodejs+express搭建多人聊天室步驟
- Nodejs實(shí)現(xiàn)多房間簡(jiǎn)易聊天室功能
- 基于Nodejs利用socket.io實(shí)現(xiàn)多人聊天室
- Node.js websocket使用socket.io庫(kù)實(shí)現(xiàn)實(shí)時(shí)聊天室
- Node.js利用Net模塊實(shí)現(xiàn)多人命令行聊天室的方法
- Node.js中使用socket創(chuàng)建私聊和公聊聊天室
- AngularJS+Node.js實(shí)現(xiàn)在線聊天室
- 使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
- nodejs實(shí)現(xiàn)的一個(gè)簡(jiǎn)單聊天室功能分享
相關(guān)文章
nodejs中art-template模板語(yǔ)法的引入及沖突解決方案
本篇文章主要介紹了nodejs中art-template模板語(yǔ)法的引入及沖突解決方案,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11node.js與C語(yǔ)言 實(shí)現(xiàn)遍歷文件夾下最大的文件,并輸出路徑,大小
這篇文章主要介紹了node.js與C語(yǔ)言 實(shí)現(xiàn)遍歷文件夾下最大的文件,并輸出路徑,大小的相關(guān)資料,需要的朋友可以參考下2017-01-01Mongoose實(shí)現(xiàn)虛擬字段查詢的方法詳解
這篇文章主要給大家介紹了關(guān)于Mongoose實(shí)現(xiàn)虛擬字段查詢的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-08-08如何在 Node.js 中使用 axios 配置代理并實(shí)現(xiàn)圖片并發(fā)下載
這篇文章主要介紹了如何在Node.js中使用axios配置代理并實(shí)現(xiàn)圖片并發(fā)下載,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-07-07node實(shí)現(xiàn)爬蟲(chóng)的幾種簡(jiǎn)易方式
這篇文章主要給大家介紹了關(guān)于node實(shí)現(xiàn)爬蟲(chóng)的幾種簡(jiǎn)易方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用node具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08基于Express+multer實(shí)現(xiàn)文件上傳功能
Multer是Node.js中的一個(gè)第三方包,或者說(shuō)是第三方中間件,主要用于是實(shí)現(xiàn)文件上傳的功能,本文小編講給大家詳細(xì)介紹一下基于Express+multer來(lái)實(shí)現(xiàn)文件上傳功能,文章通過(guò)代碼示例和圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11