【发布时间】:2013-12-16 10:06:15
【问题描述】:
我正在尝试为朋友/办公室制作一个简单的聊天服务器,它可以随时连接最多 50 人。
- 用户的消息被广播给所有连接的用户
- 服务器基于 on 'net' (TCP/IP)(稍后将移至 'http' 服务器)
- 用户 通过 Telnet 连接到服务器
在效率和/或可靠性方面,以下哪种方法是广播消息的良好做法?
- 通过管道将所有用户相互连接 (或)
- 收到数据后,写给自己以外的所有用户?
示例管道服务器:
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);
}
}
});
});
【问题讨论】:
-
如果您使用的是 node.js 0.10+,我建议使用
.on('readable', function () {}); -
是的,我的版本是 0.10+,我是菜鸟,所以我还不知道“可读”,我现在就研究一下。谢谢。
标签: node.js pipe serversocket