• NodeJS Socket Broadcast


    var net=require('net');
    var host='192.168.0.201';
    
    function executeCommand(socket, command, args) { 
        var json = {};
        switch(command){
          case "01":
          case "02":
            json.beaconid = args;
            json.state = command;
            result = JSON.stringify(json);
            console.log('server:'+result);
            socket.write('server:'+result);
            cs.write('client:'+result);
            break;
        }
    };
    
    clientList = [];
    
    function broadcast(message, client) {
      var cleanup = [];
      for(var i=0;i<clientList.length;i++) {
        if(client !== clientList[i]) {
          if(clientList[i].writable) { 
            clientList[i].write(message);
          } else {
            cleanup.push(clientList[i]);
            clientList[i].destroy();
          }
    
        }
      }
    
      for(i=0;i<cleanup.length;i++) {
          clientList.splice(clientList.indexOf(cleanup[i]), 1);
      }
    }
    
    var c = net.createServer(function(socket){
        socket.on('data', function(d) { 
          data = d.toString('utf8').trim();
          console.log(data);  
          broadcast(data, socket);
        });
    
        socket.on('end', function() {
          console.log('client server disconnected');
          try{
            clientList.splice(clientList.indexOf(client), 1);
          }catch(ex){}
        });
    
        socket.on('error', function (ex) {
          console.log("client ignoring exception: " + ex);
        });
    });
    
    c.on('connection', function(client) {
      client.name = client.remoteAddress + ':' + client.remotePort
      //client.write('Hi ' + client.name + '!
    ');
      clientList.push(client);
    })
    
    c.listen(2222,host);
    console.log('client listen on ' + host + ',port:2222...');
    var cs = net.connect({port: 2222,host:host});
    
    var s = net.createServer(function(socket) {
        console.log('server connected');
    
        socket.on('data', function(d) { 
          data = d.toString('utf8').trim();  
          var cmd_re = /^(d{2})+[ ]*(.*)/g;
          cmd_match = cmd_re.exec(data)  
          if (cmd_match) {  
            var command = cmd_match[1];  
            var args = cmd_match[2];  
            console.log(command+" "+args);
            executeCommand(socket, command, args);  
          } 
        });
    
        socket.on('end', function() {
          console.log('server disconnected');
        });
    
        socket.on('error', function (ex) {
          console.log("ignoring exception: " + ex);
        });
    
    });  
    s.listen(1111,host);
    console.log('server listen on ' + host + ',port:1111...');
    

     Ref:学习 NodeJS 第八天:Socket 通讯

  • 相关阅读:
    C# API 大全
    也说_T、_TEXT、TEXT、L
    项脊轩志--归有光
    C# tostring()汇总
    StructLayout特性
    关于C#静态构造函数的几点说明
    C#生成DLL文件
    做.net的早晚会用到,并且网上还没有这方面的正确资料或几乎很少
    C# 实现屏幕键盘 (ScreenKeyboard)
    Microsoft .NET Native
  • 原文地址:https://www.cnblogs.com/ncore/p/4366515.html
Copyright © 2020-2023  润新知