zoukankan      html  css  js  c++  java
  • 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);

    })

  • 相关阅读:
    PDOStatement::closeCursor
    PDOStatement::bindValue
    oracle drop table recyclebin恢复
    mysql基准测试工具tpcc-mysql安装、使用、结果解读
    MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题 收藏 MySQL中涉及的几个字符集
    [MySQL FAQ]系列 — EXPLAIN结果中哪些信息要引起关注
    [MySQL优化案例]系列 — 优化InnoDB表BLOB列的存储效率
    数据库专业词语
    老叶观点:MySQL开发规范之我见
    [MySQL FAQ]系列 — 为什么InnoDB表要建议用自增列做主键
  • 原文地址:https://www.cnblogs.com/jiaxingjun-1006/p/10517102.html
Copyright © 2011-2022 走看看