zoukankan      html  css  js  c++  java
  • node中的事件发射器

        在事件环中node通过on和emit进行事件的接收和发射,笔者以简单的窗口聊天小demo来演示一下如何通过事件环来发射和监听事件并执行回掉;

    var events=require('events')
    var net = require('net')
    var channel= new events.EventEmitter();//事件发射器
    channel.client={};
    channel.subscriptions={}
    channel.on("join",function(id,client){
        this.client[id]=client;
        console.log("--------------------")
        var that =this;
        this.subscriptions[id]=(senderId,message)=>{
             console.log("broadcast")
                that.client[id].write(message)
        }
        channel.on('broadcast',this.subscriptions[id]);//每当进入一个链接就会在事件环中添加一个监听
    })
    var server = net.createServer(client=>{
        console.log("--------------------1")
        var id=client.remoteAddress+':'+client.remotePort;
        channel.emit("join",id,client)
        client.on('connect',()=>{//当用户连上
            channel.emit("join",id,client)//第一个参数可以自己定义,只是一个事件的名字,除了error随便用
        })
        client.on('data',data=>{
            data=data.toString();
            channel.emit('broadcast',id,data);
        })
    })
    server.listen(8888,()=>{
        console.log("I'm listening on port 8888")
    })
    

      如上node程序可以监听要来的tcp链接并且通过broadcast广播到所有链接上的tcp客户端

      运行上面程序然后可以用telnet 客户端尝试

      关于telnet在win上的安装和使用参考

    https://blog.csdn.net/msq7487223/article/details/52366148

    https://jingyan.baidu.com/article/95c9d20d96ba4aec4f756154.html

  • 相关阅读:
    盒子的display属性
    html标签默认属性值之margin;padding值
    JS事件
    表单序列化
    2016年最后一天——前端心语
    原生JS--COOKIE
    原生JS--Ajax
    DOM,BOM
    JS面向对象
    RegExp类型,单体内置对象
  • 原文地址:https://www.cnblogs.com/mayeye/p/9562531.html
Copyright © 2011-2022 走看看