我正在尝试使用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
答案 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"});
});