首页 > 解决方案 > Socket.io 发出未调用

问题描述

我试图从断开连接中发出两件事,一个是重定向。

服务器端:

 socket.on('disconnect', () => {
    socket.broadcast.emit('user-disconnected', users[socket.id]);
    socket.emit('redirect', destination);
    console.log('disconnect: '+ users[socket.id]);
    delete users[socket.id];
  });

客户端:

这被称为:

socket.on('user-disconnected', username => {
    appendMessage(username+ ' est parti.');
    removeUser(username);
});

这不会:

socket.on('redirect', function(destination) { // never gets called…
    window.location.href = destination;
});

你知道为什么我的服务器端被调用,用户断开连接,而不是我的重定向吗?

非常感谢您的帮助!

标签: node.jssocketssocket.io

解决方案


您正在发送:

socket.emit('redirect', destination);

到刚刚断开的套接字。您实际上是在尝试从disconnect事件中发送消息。该套接字无法发送更多消息。您可以socket.broadcast.emit(...)发送到所有其他套接字,但不能发送到这个。


推荐阅读