【问题标题】:Node.js 'net' module Handling Multiple TCP clientsNode.js 'net' 模块处理多个 TCP 客户端
【发布时间】:2016-01-13 16:31:29
【问题描述】:

尊敬的,
我使用 Node.js 创建 TCP 客户端,使用“net”模块与硬件设备(仅支持 TCP 协议)连接,该设备在可用时流式传输数据,以便我可以监听 on('data',callback)强> 事件,
这对于单个客户端来说很好,但是当我有超过 10 个具有唯一 IP 地址的硬件设备时,我需要管理多个客户端和事件。 问题是

当客户端数量增加时,来自不同设备的数据仍将是异步的还是将被阻塞?

我可以同时接收来自多个设备的数据吗(意味着没有任何 延迟秒因为应用程序是实时的,我们不需要 从硬件获取数据的延迟)

如何管理多个客户端或父/子进程,每个子进程通过套接字通信连接到硬件(可数)是有效的方法?

当 TCP 连接中断时(网络问题、以太网电缆问题),但我很确定不存在“检测连接中断的可靠方法”。如何解决并重新连接到断开的连接?

如果有任何指导/经验,请分享以解决此工程问题。

提前致谢

【问题讨论】:

    标签: node.js sockets tcp node.js-client


    【解决方案1】:

    这应该是node擅长的东西,也是node的一个很好的用例。

    随着客户端数量的增加,来自不同的数据 设备仍将是异步的还是将被阻止?

    从你的套接字读取和写入应该是异步的,即使有大量的客户端。

    我可以同时接收来自多个设备的数据吗(意味着没有任何 延迟秒因为应用程序是实时的,我们不需要 从硬件获取数据的延迟)

    是的,节点事件循环是通过 libuv 实现的,http://docs.libuv.org/en/v1.x/。我对它或它的实现不是很熟悉,但我假设它将事件处理委托给最有效的 OS 库(epoll、kqueue)。通过它 IO 是异步的,你不需要做任何特别的事情,除了使用节点网络库并注册对套接字读取、打开、关闭等采取的操作。https://nodejs.org/api/net.html#net_class_net_socket

    如何管理多个客户端或每个子进程的父/子进程 通过 Socket 通信连接到硬件(可数)的进程 是有效的方法吗?

    通过使用 net tcp server api,您可以注册对某些 IO 套接字事件采取的操作,它应该无缝处理许多并发打开的连接(数百到数千)我不太清楚什么样的父/子您想到的流程设置。

    当 TCP 连接中断时(网络问题,以太网电缆 问题),但我很确定不存在“可靠的方法 检测连接中断”。如何解决和重新连接 到断开的连接?

    这是一个独立于node的问题,应该有不少处理方法。问题是,如何检测服务器是否无法访问,以及连接是否具有极高的延迟??

    如果套接字关闭,您可以订阅关闭事件并执行适当的操作。https://nodejs.org/api/net.html#net_event_close_1。另一种策略是实现超时。如果在几分钟内没有收到数据,您可以通过关闭连接来清理连接

    【讨论】:

    • 感谢您的精彩回答!父/子进程的创建只是在父进程中拥有IP数组,并将套接字程序作为每个唯一IP的子进程,这样我就可以在它们退出/错误时从父进程管理它们。另一个主要问题是套接字关闭事件当服务器/客户端发送 FIN 数据包时触发,因此当我拔下以太网电缆时,永远不会触发错误/关闭回调(我对此进行了测试),我正在测试这些,因为这是关键的实时应用程序。而且您的解释很棒,让我通过并实施它,以便我可以接受答案。
    • @androidlover 如果你拔掉以太网,很可能如果你把它插回去,它仍然可以工作,所以如果网络停止一段时间,立即关闭连接可能没有意义。这是处理重新连接套接字的操作系统......虽然可以使用超时来防止无限期的套接字。
    • 我的想法是简单地通过套接字写入并测试连接是否有效(主机可访问),如果不通过 setInterval 方法重新连接。或者只是通过 setInterval ping 命令到主机 - 我这样做是为了确保我仍然连接到硬件设备。硬件设备在任何情况下都不会发送任何 FIN 数据包来关闭连接。
    猜你喜欢
    • 2021-04-09
    • 1970-01-01
    • 2016-04-27
    • 1970-01-01
    • 2015-11-01
    • 1970-01-01
    • 2021-04-28
    • 2019-07-25
    • 1970-01-01
    相关资源
    最近更新 更多