javascript - node.js : socket. 中的 socket.io 发出在 socket.disconnect 之前未完成

标签 javascript node.js https websocket socket.io

我尝试使用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 事件,例如:

注销 - 客户端应停止尝试连接,直到用户登录

服务器重新启动 - 客户端应重新尝试连接,直到连接成功

我需要能够在客户端知道为什么客户端被服务器断开连接,是否至少有某种方法可以确保在调用 socket.disconnect() 之前已发送消息?

编辑:这似乎特定于 Node.js cluster 代码 - 当应用程序在单个线程上运行时,它会按预期工作。

最佳答案

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

关于javascript - node.js : socket. 中的 socket.io 发出在 socket.disconnect 之前未完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16746109/

相关文章:

javascript - 主要 JavaScript 框架/库列表

c++ - 将缓冲区转换为 istream 以在现有程序中工作

javascript - 捕获 ES6 promise 中的错误

.htaccess - HTTP 到 HTTPS 和非 WWW 到具有多个域的 www

amazon-web-services - 如何为ELB实例安装外部SSL?

javascript - 协助在 JavaScript 中实现基数排序

javascript - IE10/Javascript + Touch 设备 - 如何捕获双击?

javascript - bool 值并不反射(reflect)在 ng-model 的任何地方;使用 Batarang 进行验证并使用 Controller 作为

javascript - 在 Console.log 和 api 响应中获取未定义的外键

javascript - 使用 X509 证书验证 Docusign Connect 签名