Socket聊天逻辑

 

         1、A发送消息到服务器

         2、服务器接收到消息后会给所有用户发送这条消息

         3、如果有用户断开连接,则不用给此用户发送

一、创建持久性连接服务器  net,设置其端口号为9000

const net = require(“net”);

const server = net.creatServer();

server.listen(9000);

二、当用户连接到服务器以后

         server.on("connection",(client)=>{})

三、存储下所有的用户

         const clients = [];

         clients.push(client);

四、给用户编号,断开连接后删除

         client.id = clients.length;

         4.1 创建client.js文件,连接到服务器

                  const net = require("net");

                  const client = new net.Socket();

                  client.connect(9000,"127.0.0.1",()=>{

});

                  4.1.1 接受服务器传递过来的消息

                          client.on("data",(data)=>{

        console.log(data)

    })

         4.2 接收客户端传递过来的消息

                  client.on("data",(data)=>{

    })

                  4.2.1将buffer文件转换为字符串

                          client.setEncoding("utf8")

                  4.2.2然后将这个消息发送给所有的用户   

                                  clients.map((item)=>{

            if(item){

                item.write(data);

            }

        })

          client.on("close",()=>{

        clients[client.id] = null;

})

五、创建文件的读写流

         const readline = require("readline");

         const rl = readline.createInterface({

    input:process.stdin,

    output:process.stdout

})

         rl.on("line",(text)=>{

    //发送消息

    client.write(text);

})

posted @ 2019-03-12 15:39  飏十七  阅读(256)  评论(0编辑  收藏  举报