最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)文章

  • nodejs中模塊定義實(shí)例詳解

    nodejs中模塊定義實(shí)例詳解

    這篇文章主要介紹了nodejs中模塊定義方法,結(jié)合實(shí)例形式分析了nodejs模塊的原理、常見(jiàn)模塊及相應(yīng)的定義方法,需要的朋友可以參考下
    2017-03-03
  • 如何從零開(kāi)始手寫(xiě)Koa2框架

    如何從零開(kāi)始手寫(xiě)Koa2框架

    這篇文章主要介紹了如何從零開(kāi)始手寫(xiě)Koa2框架,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Node.js安裝及npm國(guó)內(nèi)鏡像配置的方法實(shí)現(xià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ù)功能示例

    這篇文章主要介紹了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í)例代碼

    nodejs對(duì)mongodb數(shù)據(jù)庫(kù)的增加修刪該查實(shí)例代碼

    在本篇文章里小編給大家整理的是一篇關(guān)于nodejs對(duì)mongodb數(shù)據(jù)庫(kù)的增加修刪該查實(shí)例代碼,有需要的朋友們可以參考下。
    2020-01-01
  • 阿里云OSS實(shí)踐文件直傳基于服務(wù)端

    阿里云OSS實(shí)踐文件直傳基于服務(wù)端

    這篇文章主要為大家介紹了阿里云OSS實(shí)踐文件直傳基于服務(wù)端實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Node.js 中的 fs 模塊與Path模塊方法詳解

    Node.js 中的 fs 模塊與Path模塊方法詳解

    這篇文章主要介紹了Node.js 中的 fs 模塊與Path模塊,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • 使用nodeJs來(lái)安裝less及編譯less文件為css文件的方法

    使用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

    這篇文章主要給大家介紹了利用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)方法

    這篇文章主要介紹了Node 綁定全局 TraceID的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11

最新評(píng)論

皮山县| 广南县| 桃园市| 大关县| 琼中| 枝江市| 醴陵市| 龙山县| 井研县| 高要市| 潼关县| 镇原县| 昭平县| 南昌县| 赤城县| 漾濞| 邮箱| 邓州市| 金乡县| 恩施市| 双江| 平原县| 武功县| 克什克腾旗| 宣汉县| 罗山县| 申扎县| 宣武区| 龙井市| 乡城县| 独山县| 福海县| 沽源县| 松江区| 双桥区| 曲周县| 兴城市| 乾安县| 潜山县| 饶河县| 桓台县|