不能在同一页面中第二次执行Socket.on('connect',function(){})

时间:2012-05-07 13:53:33

标签: node.js socket.io

我正在尝试创建一个简单的注销和登录的简单应用程序。登录时我正在加入房间,当我退出房间时使用socket.leave('room');

问题是,如果我在没有刷新的情况下再次登录同一页面,则socket.on('connect',...)内的代码不会执行。请帮我解决这个问题

1 个答案:

答案 0 :(得分:0)

就像Jakub说的那样,当客户端连接到服务器而不是加入房间时,会发生'connect'事件。房间是连接顶部的额外命名空间。如果您想在每次有人加入时执行代码,最简单的方法就是在socket.join('whatever')调用之后运行该代码。

有点棘手,但也许更具包容性的解决方案是附加某种处理程序来加入一个房间。如果你可以做socket.on('join', fn)但是试一试,我不确定。如果它不起作用,你应该能够通过后端订阅,这样的东西可能会起作用:

socket.manager.store.subscribe('join', function (id, room) {
    //do whatever
});