【发布时间】:2012-03-23 12:29:40
【问题描述】:
我正在尝试为 Node.js 中的不同 URL 连接许多 socket.io 客户端,如下所示:
app.get('/:id',function(req,res){
io.of('/'+id).on('connection',function(socket){
socket.emit('hello');
})
});
这可行,但是有一个问题:
例如,当浏览器刷新页面 http://localhost:3000/xyz 时,事件 socket.emit 会被触发两次。
如果有人访问页面http://localhost:3000/xyz 10 次,则事件触发 10 次。
这不好,因为每次用户访问该页面时,套接字事件都会被触发 n+1 次。
应该怎么做,这样我就可以将套接字注册到不同的 URL,同时又不会出现这种异常。
另一件事:
如果我这样做:
var sock;
io.of('/'+xyz).on('connection',function(socket){
sock=socket;
})
app.get('/:id',function(req,res){
sock.emit('hello');
})
如果我使用上面的代码,那么套接字不会在 time 中成功保存到 sock 变量中。这意味着,我必须做一个大约 1000 的 setInterval .. 这样
sock=socket
行被触发。
请帮帮我。
【问题讨论】: