我在客户端有一个经销商套接字,它连接到服务器端的路由器套接字。
我经常看到心跳机制:服务器定期向客户端发送消息,以便客户端知道自己是否正确连接到服务器,以便客户端在一段时间内没有收到消息时可以重新连接。
例如这里的偏执海盗模式:http://zguide.zeromq.org/page:chapter4 http://zguide.zeromq.org/page:chapter4
但经过一些测试:如果客户端暂时失去与服务器的连接并再次找到它,则客户端会自动重新连接到服务器套接字(他接收发送的消息......)。
我想知道什么情况下需要心跳?
心跳不需要保持连接活动(TCP 套接字有一个 ZMQ_TCP_KEEPALIVE 套接字选项)。相反,双方都需要心跳才能知道对方仍然处于活动状态。如果任何一方确实检测到另一方不活动,则可以采取替代行动。
不活动可能是因为进程已死亡、死锁、在网络活动之间做了太多工作或网络故障等。从另一方的角度来看,如果没有更多信息,所有这些情况都无法区分。
在网络中,进行设计是比较容易的部分。最困难的部分是应对失败。您必须考虑尽可能多的可能的故障模式,并在设计协议中处理它们。心跳通常是这些协议中有用的部分。例如,它们比尝试使用监视器事件来确定套接字是否仍在运行要有用得多。
话虽如此,如果您的应用程序不需要任何特定级别的可靠性;也许您可以在发生故障时重新启动设备。那么你可能不需要担心心跳。毕竟,指南中有很多模式没有使用它。这是课程的马。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)