NodeJS如何使用套接字处理多个TCP连接

时间:2016-12-19 08:23:09

标签: node.js sockets tcp

我正在尝试使用Node.js构建套接字服务器。服务器需要处理多个TCP连接。这是我的代码:

const HOST = '127.0.0.1';
const PORT = 5000;

var app = require('net')();
var sleep = require('sleep');

var server = net.createServer().listen(PORT, HOST);
server.on('connection', function(sock){
    console.log('CONNECTED: ' + sock.remoteAddress + ':' + sock.remotePort);
    var c = 0;
    while(true){
        sock.write(c.toString()+' ');
        c++;
        sleep.sleep(1);
    }
});
console.log('Server listening on ' + HOST + ':' + PORT);

如何并行处理所有连接而不是排队?谢谢:D

2 个答案:

答案 0 :(得分:1)

正如评论中已经说明的那样,您使用while(true)屏蔽了事件循环,而是尝试使用setInterval来实现所需的结果:

setInterval(function() {
    sock.write(c.toString()+' ');
    c++;
}, 1000)

答案 1 :(得分:0)

我不确定我理解你的问题。

但是每个客户端都会触发server.on(' connection'),只要用户还在那里,就可以通过你的sock变量获得请求。你需要考虑一个基于事件的配置,而不是试图阻止你的服务器来提醒用户,它将有两种事件sock.on,它将从客户端发出一个事件,一个emit事件将发送数据到目标客户端。

所以你可以想象这样的事情

server.on('connection', function(sock){
    sock.on('event_name', function(data_received){ 
       // Some stuff
    });
    sock.emit("connected", {"message", "Hi From the server"});
});

我认为socket.io is a great place to start