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)文章
Node.js安裝及npm國(guó)內(nèi)鏡像配置的方法實(shí)現(xiàn)
本文主要介紹了Node.js安裝及npm國(guó)內(nèi)鏡像配置,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
nodejs實(shí)現(xiàn)的連接MySQL數(shù)據(jù)庫(kù)功能示例
這篇文章主要介紹了nodejs實(shí)現(xiàn)的連接MySQL數(shù)據(jù)庫(kù)功能,結(jié)合實(shí)例形式分析了nodejs連接及查詢mysql數(shù)據(jù)的相關(guān)操作步驟與實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-01-01
nodejs對(duì)mongodb數(shù)據(jù)庫(kù)的增加修刪該查實(shí)例代碼
在本篇文章里小編給大家整理的是一篇關(guān)于nodejs對(duì)mongodb數(shù)據(jù)庫(kù)的增加修刪該查實(shí)例代碼,有需要的朋友們可以參考下。2020-01-01
使用nodeJs來(lái)安裝less及編譯less文件為css文件的方法
這篇文章主要介紹了使用nodeJs來(lái)安裝less及編譯less文件為css文件的方法,在文章末尾給大家補(bǔ)充介紹了通過(guò)nodejs將less文件轉(zhuǎn)為css文件的方法,具體內(nèi)容詳情大家通過(guò)本文學(xué)習(xí)吧2017-11-11
利用Mongoose讓JSON數(shù)據(jù)直接插入或更新到MongoDB
這篇文章主要給大家介紹了利用Mongoose讓JSON數(shù)據(jù)直接插入或更新到MongoDB數(shù)據(jù)庫(kù)的相關(guān)資料,文中詳細(xì)介紹了配置Mongoose、創(chuàng)建目錄及文件、插入數(shù)據(jù),POST提交JSON增加一條記錄以及詢數(shù)據(jù),取出剛增加的記錄等內(nèi)容,需要的朋友可以參考下。2017-05-05
Node綁定全局TraceID的實(shí)現(xiàn)方法
這篇文章主要介紹了Node 綁定全局 TraceID的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11

