我正在尝试使用简单的注销和登录创建一个简单的应用程序。登录时加入房间,注销时使用 socket.leave('room');
问题是,如果我在没有刷新的情况下再次登录同一页面,则 socket.on('connect',...) 中的代码不会执行。请帮我解决这个问题
就像 Jakub 说的,当客户端连接到服务器时触发 'connect' 事件,而不是加入房间。房间是连接之上的一个额外命名空间。如果您想在每次有人加入时执行代码,最简单的方法是在socket.join('whatever')
调用后运行该代码。
有点棘手,尽管可能更全面的解决方案是附加某种处理程序以加入房间。我不确定你是否可以做socket.on('join', fn)
,但试一试。如果它不起作用,您应该能够通过后端订阅,这样的事情可能会起作用:
socket.manager.store.subscribe('join', function (id, room) {
//do whatever
});