zoukankan      html  css  js  c++  java
  • socket会话

    socket业务逻辑

    服务端逻辑
    1、引入net模块创建一个服务端,因为net模块时持久性连接,http模块时非持久性连接
    2、创建一个新的服务器,建立端口号
    3、用connection方法将用户链接进来,之前要先定义一个数组用于接收用户,设置好用户的id便于之后用户断开连接停止发送信息给该用户,push方法添加用户
    4、使用client.on里面的data方法接收用户传递过来的消息,用map循环遍历用户所在的数组,如果存在就传递消息
    5、当用户断开连接时,将用户id清除


    客户端逻辑
    1、引入一个net模块
    2、引入readline文件读写流 可以在终端进行文件的读写
    3、创建服务端
    4、通过readline。createface创建文件的输入输出
    5、客户端通过connect进行连接服务端,里面三个参数分别是端口号,ip地址,和回调,会调离用来接收服务端传递过来的消息
    6、使用line方法进行文件的接收,通过client.write发送消息

    服务端

    //服务端 server.js
    const net = require("net")//持久性连接  所以用net模块  http 模块非持久性连接
    const server = net.createServer();
    server.listen(9000);
    
    const clients = []
    //当用户连接到服务器以后 要做的事情
    server.on("connection",(client)=>{
        //将所有的客户端保存在一个数组中,当收到消息的时候将这个消息给所有用户发送过去
        client.id = client.length;
        clients.push(client);
        console.log("有人连接进来了");
        
        //接收客户端传递过来的消息
        client.on("data",(data)=>{
            //console.log(data+"")
            //然后将这个消息发送给所有的用户
            clients.map((item)=>{
                if(item){
                    item.write(data);
                }
            })
        })
        //当客户端断开连接的时候,将他从数组中移除
        client.on("close",()=>{
             clients[client.id]=null
        })
       
    })
    

      客户端

    //客户端  client.js
    const net = require("net");
    const readline = require("readline");//创建文件读写流  可以在终端上进行文件的书写
    const client = new net.Socket();
    
    const rl = readline.createInterface({
        input:process.stdin,
        output:proess.stdout
    })
    //将buffer文件转换为文字符
    client.setEncoding("utf8")
    
    //客户端使用connect方法连接服务器  参数1: 端口号  参数2 IP地址
    client.connect(9000,"127.0.0.1",()=>{
        //client.write("123");
        //接收服务端传递过来的消息
        client.on("data",(data)=>{
            console.log(data)
        })
    });
    //让我们在终端上进行文件的读写
    rl.on("line",(text)=>{
        //发送消息
        client.write(text);
    })
    

      

  • 相关阅读:
    爬取阳光问政平台
    CrawlSpider爬取腾讯招聘信息
    LinkExtractor
    镜像源列表
    screen命令总结
    PHP解决中文乱码问题
    Linux查找大文件或目录
    CentOS6/7系列防火墙管理
    删除win10冗余的服务
    解决win10安装wireshark新版本,欢迎界面卡顿情况
  • 原文地址:https://www.cnblogs.com/zcccz/p/11280671.html
Copyright © 2011-2022 走看看