【问题标题】:Node JS detect connectivity to all Node JS programsNode JS 检测到所有 Node JS 程序的连接
【发布时间】:2021-05-15 06:53:04
【问题描述】:

让我尽可能简洁明了地描述它:

我有 10 个不同的基于节点 JS 的程序在 10 个不同的桌面上运行。我想创建一个部署在服务器上的基于 Node JS(或任何其他技术)的 Web 应用程序,它将检查这 10 个程序是否在线。

关于如何实现此功能的任何建议? 注意:基于 node JS 的桌面应用是在 electron 上运行的。

【问题讨论】:

  • 看起来像 socket.io 的用例
  • WebSockets 或简单的 HTTP 请求或 TCP/UDP 消息,或,或,或...
  • 但是@Danizavtz 到底是什么?如何在不打扰或减慢主进程的情况下在后台执行此操作,请记住互联网可能会断断续续..

标签: javascript python node.js electron backend


【解决方案1】:

您可以使用两种最可能的方式。

  1. 如果您想立即知道 10 个程序中是否有任何程序下线,那么您应该使用 Socket.io
  • 您的服务器 nodejs 程序将充当服务器,而您的 10 桌面程序将充当客户端。您的 10 个客户端套接字连接将与服务器套接字连接连接,服务器套接字可以根据套接字的 Ping/Pong 概念检查套接字客户端是否仍然连接。

简而言之,Ping/pong 技术,其中服务器在套接字连接上发送 Ping 事件,客户端将接收服务器的 ping 事件并将 Pong 事件发送回服务器。 如果客户端在获取 Ping 事件时未在预定义的时间间隔内发回 Pong 事件,则该客户端处于脱机状态或断开连接。

  1. 您可以定期(例如每 1/5/10 分钟等)调用简单的 HTTP 请求并检查响应状态是否为 200。如果这 10 个桌面程序中的任何一个处于脱机状态,那么您将通过响应状态知道它是否为 200。

【讨论】:

    【解决方案2】:

    虽然您可以为此使用 socket.io,但也可能有一种更简单的方法,即仅使用发布请求 / cron 每隔 X 分钟检查一次服务器是否可以从“检查”服务器访问(那就是正在执行检查的服务器)

    那么为什么不使用 socket.io 呢?好吧,在不知道您的节点服务器是如何设置的情况下,很难说 socket.io 是否适合,这仅仅是因为 socket.io 使用 WSS 进行连接,所以除非您从浏览器运行它,否则它将需要额外的在服务器上设置配置/模块以实际使用 WSS(如果您确实走这条路线,则每个系统上都需要 socket.io-client 模块,这很重要,因为这将允许您连接到 socket.io 服务器,也确保 socket.io 的版本与 socket.io-client 版本匹配)

    总而言之,如果我要构建它,我可能只会对每台服务器进行简单的 ping 操作并将其记录到数据库或其他什么,但您的需求将真正决定您的前进方向

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-30
      • 2015-06-10
      • 2018-09-18
      • 1970-01-01
      • 1970-01-01
      • 2020-01-17
      相关资源
      最近更新 更多