我正在尝试将 node.js 用作带有 socket.io 的服务器(通过https
连接服务器对象,客户端使用 option 连接secure: true
)和 JavaScript 前端。
如果登录尝试失败,我在服务器上调用:
socket.emit('unauthorized');
socket.disconnect();
在客户端,我有:
this.Socket = io.connect(server, { secure: true });
this.Socket.on('disconnect', this.Socket_Disconnect);
this.Socket.on('unauthorized', this.Socket_Unauthorized);
我能够看到断开事件触发(参数设置为['booted']
无论我是否将任何参数传递给socket.disconnect()
,但未经授权的事件从未成功。我是否试图以错误的方式传递此消息?
我在这里的理由是我希望能够发送不同类型的disconnect
事件,例如:
logout
- 客户端应停止尝试连接,直到用户登录
server reboot
- 客户端应该重新尝试连接,直到他们通过
我需要能够在客户端告诉为什么客户端被服务器断开连接,是否至少有某种方法可以确保在调用之前已发送消息socket.disconnect()
?
编辑:这似乎特定于 node.jscluster
代码 - 当应用程序在单个线程上运行时,它按预期工作。