1

我正在尝试将 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代码 - 当应用程序在单个线程上运行时,它按预期工作。

4

1 回答 1

0

通过设置 Redis 服务器并配置 socket.io 以在 node.js 中使用它来解决此问题,如果有人发现此问题正在寻找解决方案。

于 2013-05-26T03:36:10.857 回答