尊敬的,
我使用Node.js创建TCP客户端,使用'net'模块连接硬件设备(仅支持TCP协议),Streams数据可用,这样我就可以收听 on('data',callback)事件,
这对单个客户端来说很好,但是当我有10个以上具有唯一IP地址的硬件设备时,我需要管理多个客户端和事件。
问题是
虽然客户端数量增加但来自不同设备的数据仍然是异步的,或者它将被阻止?
我可以在当时从多个设备接收数据(意思是没有任何数据 延迟秒因为应用程序是实时的,我们不需要 延迟从硬件获取数据
如何管理多个客户端或父/子进程,每个子进程通过套接字通信连接到硬件(可数)是有效的方法吗?
当TCP连接中断时(网络问题,以太网电缆问题),但我很确定没有“可靠的方法来检测连接中断”。我如何处理并重新连接到断开的连接?
如果有任何指导/经验,请分享以解决此工程问题。
提前致谢
答案 0 :(得分:1)
这应该是节点擅长的东西,并且是节点的一个很好的用例。
虽然客户端数量增加,但来自不同的数据 设备仍然是异步的,还是会被阻止?
即使存在大量客户端,从socket读取和写入也应该是异步的。
我可以在当时从多个设备接收数据(意思是没有任何数据 延迟秒因为应用程序是实时的,我们不需要 延迟从硬件获取数据
是的,节点事件循环是通过libuv http://docs.libuv.org/en/v1.x/实现的。我对它或它的实现不是很熟悉,但是我假设它将事件处理委托给最有效的OS库(epoll,kqueue)。通过它IO是异步的,你不需要做任何特殊的事情,除了使用节点网络库并注册对套接字读取,打开,关闭等采取的操作。https://nodejs.org/api/net.html#net_class_net_socket
如何管理每个孩子的多个客户或父/子进程 通过套接字通信连接到硬件(可数)的过程 是有效的方式吗?
通过使用net tcp服务器api,您可以注册对某些IO套接字事件采取的操作,它应该无缝地处理许多并发打开的连接(数百到数千)我不是很清楚什么样的父/子您想到的流程设置。
当TCP连接断开时(网络问题,以太网电缆 问题),但我很确定没有"可靠的方法 检测连接中断"。如何解决和重新连接 破碎的连接?
这是一个独立于节点的问题,应该有很多方法来处理它。问题是,如何检测服务器是否无法访问,以及连接是否具有极高的延迟?
如果套接字已关闭,您可以订阅close事件并执行适当的操作。https://nodejs.org/api/net.html#net_event_close_1。另一种策略是实现超时。如果在几分钟内没有收到任何数据,您可以通过关闭来清理连接