0

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

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

4

1 回答 1

0

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

有点棘手,尽管可能更全面的解决方案是附加某种处理程序以加入房间。我不确定你是否可以做socket.on('join', fn),但试一试。如果它不起作用,您应该能够通过后端订阅,这样的事情可能会起作用:

socket.manager.store.subscribe('join', function (id, room) {
    //do whatever
}); 
于 2012-05-08T18:41:02.460 回答