【问题标题】:User friendly way of closing node.js websocket connections关闭 node.js websocket 连接的用户友好方式
【发布时间】:2018-11-01 09:06:12
【问题描述】:

我有一个应用程序在检查以确保尚未分配端口后在随机端口上启动 websocket 连接。每个连接都有一个带有滑块的正面卡,用于根据分配(和存储)的端口号创建/销毁 TCP 连接。使用它附带的预定义事件处理为每个套接字启动服务器很简单,但我不确定允许用户终止 tcp 连接的方法。这看起来像前端的用户将切换开关滑动到关闭位置,我将获取该实体 ID,查询其端口号,然后需要关闭该端口的连接。我希望节点有一种方法能够查询其活动服务器并随意对它们进行操作,但我还没有找到任何建议方法的文章。

【问题讨论】:

  • 你为什么要为此启动多个服务器?您可以让多个客户端连接到同一台服务器。这是通常和常见的设计。
  • 仅供参考,没有“node.js 方式”来查询它已启动的服务器。您可以在启动它们时在数组中跟踪它们。但是,我仍然认为您可能不需要多个 webSocket 服务器,一个可能对您的所有客户端都很好,因此您所询问的问题就消失了。
  • @jfriend00 用于安全推理。每个端口都有自己的相应设置,并且是使用它的组织的唯一所有权。
  • 这仍然不能解释为什么需要多个 webSocket 服务器。可以在连接上很好地实现安全性,不需要单独的 webSocket 服务器。
  • 我得好好想想。你可能有一个观点

标签: javascript node.js tcp websocket server


【解决方案1】:

我希望 node 有一种方法可以查询其活动服务器并随心所欲地对它们进行操作,但我还没有找到任何建议方法的文章。

node.js 中没有内置这样的东西。

如果您希望能够在您启动的所有 webSocket 服务器上运行,那么您可以在启动它们时将它们添加到一个数组中。

const serverArray = [];


// code elsewhere that starts a server
let server = new WebSocketServer(someRandomPort);
// push an object into an array that has the port and server
serverArray.push({server, port: someRandomPort});

然后,您可以随时迭代该数组以对所有数组执行某些操作或查找正在使用特定端口的服务器。


但是,在我看来,您实际上并不需要多个 webSocket 服务器。多个客户端(无论您想要多少安全性)都可以共享同一台服务器。这是通常的客户端/服务器设计(多个客户端与一台服务器通信)。

【讨论】:

  • @colinrickels - 这能回答你的问题吗?如果是这样,请通过单击答案左侧的复选标记向社区表明这一点。这也将为您在此处遵循正确的程序赢得一些声誉积分。如果没有,请指出尚未回答的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-25
  • 1970-01-01
  • 1970-01-01
  • 2019-09-28
  • 1970-01-01
  • 2016-12-08
  • 2019-10-22
相关资源
最近更新 更多