node+socket實現(xiàn)簡易聊天室功能
更新時間:2021年07月11日 13:12:50 作者:言小溪
這篇文章主要為大家詳細介紹了node+socket實現(xiàn)簡易聊天室功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了node+socket實現(xiàn)簡易聊天室的具體代碼,供大家參考,具體內(nèi)容如下
服務(wù)端
const net = require('net')
const server = net.createServer()
//用戶列表
let clients = []
//監(jiān)聽連接
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ā)生錯誤`)
})
})
server.on('error',(err)=>{
console.log('服務(wù)器錯誤',err)
})
server.on('close',()=>{
console.log('服務(wù)器關(guān)閉')
})
server.listen(9527,()=>{
console.log("服務(wù)器開啟")
})
客戶端
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
//開始發(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ù)器斷開');
});
client.on('error', () => {
console.log('服務(wù)器錯誤');
});
//一直遞歸輸出
function sendMsg(client){
rl.question('',(line)=>{
client.write(JSON.stringify({
name:client.name,
msg:line
}))
sendMsg(client)
})
}
演示
服務(wù)端

客戶端1

客戶端2

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- NodeJS實現(xiàn)一個聊天室功能
- nodejs+express搭建多人聊天室步驟
- Nodejs實現(xiàn)多房間簡易聊天室功能
- 基于Nodejs利用socket.io實現(xiàn)多人聊天室
- Node.js websocket使用socket.io庫實現(xiàn)實時聊天室
- Node.js利用Net模塊實現(xiàn)多人命令行聊天室的方法
- Node.js中使用socket創(chuàng)建私聊和公聊聊天室
- AngularJS+Node.js實現(xiàn)在線聊天室
- 使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
- nodejs實現(xiàn)的一個簡單聊天室功能分享
相關(guān)文章
Node.js安裝及npm國內(nèi)鏡像配置的方法實現(xiàn)
本文主要介紹了Node.js安裝及npm國內(nèi)鏡像配置,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
nodejs實現(xiàn)的連接MySQL數(shù)據(jù)庫功能示例
這篇文章主要介紹了nodejs實現(xiàn)的連接MySQL數(shù)據(jù)庫功能,結(jié)合實例形式分析了nodejs連接及查詢mysql數(shù)據(jù)的相關(guān)操作步驟與實現(xiàn)技巧,需要的朋友可以參考下2018-01-01
nodejs對mongodb數(shù)據(jù)庫的增加修刪該查實例代碼
在本篇文章里小編給大家整理的是一篇關(guān)于nodejs對mongodb數(shù)據(jù)庫的增加修刪該查實例代碼,有需要的朋友們可以參考下。2020-01-01
使用nodeJs來安裝less及編譯less文件為css文件的方法
這篇文章主要介紹了使用nodeJs來安裝less及編譯less文件為css文件的方法,在文章末尾給大家補充介紹了通過nodejs將less文件轉(zhuǎn)為css文件的方法,具體內(nèi)容詳情大家通過本文學(xué)習(xí)吧2017-11-11
利用Mongoose讓JSON數(shù)據(jù)直接插入或更新到MongoDB
這篇文章主要給大家介紹了利用Mongoose讓JSON數(shù)據(jù)直接插入或更新到MongoDB數(shù)據(jù)庫的相關(guān)資料,文中詳細介紹了配置Mongoose、創(chuàng)建目錄及文件、插入數(shù)據(jù),POST提交JSON增加一條記錄以及詢數(shù)據(jù),取出剛增加的記錄等內(nèi)容,需要的朋友可以參考下。2017-05-05

