1. 程式人生 > 程式設計 >node+socket實現簡易聊天室功能

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}上線`)
    http://www.cppcns.com
}else{ for (const client of clients) { if(client.name!==ON.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('cleurtPzzcY
ose',()=>{ consol客棧e.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(cleurtPzzcY
ient){ rl.question('',(line)=>{ client.write(JSON.stringify({ name:client.name,msg:line })) sendMsg(client) }) }

演示

服務端

node+socket實現簡易聊天室功能

客戶端1

node+socket實現簡易聊天室功能

客戶端2

node+socket實現簡易聊天室功能

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。