node+socket实现简易聊天室功能

本文实例为大家分享了node+socket实现简易聊天室的具体代码,供大家参考,具体内容如下

服务端

const net = require('net')

const server = net.createServer()

//用户列表

let clients = []

//监听连接

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}发生错误`)

})

})

server.on('error',(err)=>{

console.log('服务器错误',err)

})

server.on('close',()=>{

console.log('服务器关闭')

})

server.listen(9527,()=>{

console.log("服务器开启")

})

客户端

const net = require('net')

const readline = require('readline')

//读取输入的信息

const rl = readline.createInterface({

input: process.stdin,

output: process.stdout

});

//名字

const name = process.argv[2]

//连接服务器

const client = net.createConnection({port:9527},()=>{

console.log(name+'连接到服务器');

client.write(`login:${name}`)

client.name = name

//开始发送信息

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('已从服务器断开');

});

client.on('error', () => {

console.log('服务器错误');

});

//一直递归输出

function sendMsg(client){

rl.question('',(line)=>{

client.write(JSON.stringify({

name:client.name,

msg:line

}))

sendMsg(client)

})

}

演示

服务端

客户端1

客户端2

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是 node+socket实现简易聊天室功能 的全部内容, 来源链接: utcz.com/p/221029.html

回到顶部