欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

node+socket實(shí)現(xiàn)簡(jiǎn)易聊天室功能

 更新時(shí)間:2021年07月11日 13:12:50   作者:言小溪  
這篇文章主要為大家詳細(xì)介紹了node+socket實(shí)現(xiàn)簡(jiǎn)易聊天室功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(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í)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • node中如何使用redis的實(shí)現(xiàn)

    node中如何使用redis的實(shí)現(xiàn)

    本文主要介紹了node中如何使用redis的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • nodejs中art-template模板語(yǔ)法的引入及沖突解決方案

    nodejs中art-template模板語(yǔ)法的引入及沖突解決方案

    本篇文章主要介紹了nodejs中art-template模板語(yǔ)法的引入及沖突解決方案,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • node.js與C語(yǔ)言 實(shí)現(xiàn)遍歷文件夾下最大的文件,并輸出路徑,大小

    node.js與C語(yǔ)言 實(shí)現(xiàn)遍歷文件夾下最大的文件,并輸出路徑,大小

    這篇文章主要介紹了node.js與C語(yǔ)言 實(shí)現(xiàn)遍歷文件夾下最大的文件,并輸出路徑,大小的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • 如何刪除node_modules重新安裝的方法步驟

    如何刪除node_modules重新安裝的方法步驟

    我們?cè)陂_(kāi)發(fā)項(xiàng)目的時(shí)候,每次安裝的 node 包會(huì)出現(xiàn)版本和項(xiàng)目所需要的版本不一致的問(wèn)題,那么如何刪除node_modules重新安裝,本文就詳細(xì)的介紹一下
    2021-09-09
  • Mongoose實(shí)現(xiàn)虛擬字段查詢的方法詳解

    Mongoose實(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ā)下載

    這篇文章主要介紹了如何在Node.js中使用axios配置代理并實(shí)現(xiàn)圖片并發(fā)下載,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • node使用crypto模塊為用戶密碼加密

    node使用crypto模塊為用戶密碼加密

    本文主要介紹了node使用crypto模塊為用戶密碼加密,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • node實(shí)現(xiàn)爬蟲(chóng)的幾種簡(jiǎn)易方式

    node實(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
  • 從零揭秘npm install的黑科技

    從零揭秘npm install的黑科技

    通過(guò)npm package manager來(lái)安裝和管理包是我們最為常見(jiàn)的方式之一,本文將從淺入深地帶大家剖析一下npm install的執(zhí)行過(guò)程,感興趣的可以學(xué)習(xí)一下
    2023-05-05
  • 基于Express+multer實(shí)現(xiàn)文件上傳功能

    基于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

最新評(píng)論