我正在尝试将node.js用作具有socket.io的服务器(通过https
连接服务器对象,客户端连接选项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.js cluster
代码 - 当应用程序在单个线程上运行时,它按预期工作。
答案 0 :(得分:0)
通过设置Redis服务器并配置socket.io以在node.js中使用它来解决这个问题,如果有人发现这样找到解决问题的方法。