我正在尝试为朋友/办公室制作一个简单的聊天服务器,随时可以连接最多50人。
以下哪种方法是在效率和/或可靠性方面广播消息的良好做法?
管道服务器示例:
var server = net.createServer(function(socket) {
for(var i=0; i<sockets_list.length; i++){
socket.pipe(sockets_list[i]);
sockets_list.pipe(socket);
}
sockets_list.push(socket);
});
示例写入服务器:
var server = net.createServer(function(socket) {
sockets_list.push(socket);
socket.on('data', function(data){
for(var i=0; i<sockets_list.length; i++){
if(socket != sockets_list[i]){
sockets_list[i].write(data);
}
}
});
});
答案 0 :(得分:1)
这个管道解决方案似乎非常错误,至少有三个原因:
.pipe
以某种方式处理它,但我不知道如何以及它的可靠性如何)。每次数据可用时都不必读/写。事实上你不应该。您应该始终考虑连续读/写之间的最短时间。它将更加高效和安全(对于用户而言,延迟半秒对于用户来说并不是什么大问题,他甚至都不会注意到它。)