node.js - 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;
});
你知道为什么我的服务器端被调用,用户断开连接,而不是我的重定向吗?
非常感谢您的帮助!
解决方案
您正在发送:
socket.emit('redirect', destination);
到刚刚断开的套接字。您实际上是在尝试从disconnect
事件中发送消息。该套接字无法发送更多消息。您可以socket.broadcast.emit(...)
发送到所有其他套接字,但不能发送到这个。
推荐阅读
- javascript - Next.JS 生产构建子链接查看源未找到
- database - 使用 Mongo Query,从字典列表中删除特定键(如果存在)
- floating-point - 浮点运算,整数溢出不能转为 0 对吗?
- android - 为什么这个错误无法下载 JS 包?
- python - 如何导出和迁移 OpenSlides 数据库?
- c# - OData 路由找不到路由
- javascript - CSS文件不起作用
- javascript - FB 登录开发人员与实时模式
- android - Jetpack compose 状态管理,无法更改 Card 的背景颜色
- mysql - 更改程序或函数失去权限