我们的一个分布式应用程序正在使用心跳检测对方的断开连接(例如LAN线路断开等)。 是心跳需要吗?使用tcp时,我必须保持心跳吗?
0
A
回答
1
也许,如果你没有得到心跳,你会做什么?
如果你没有办法恢复有 没有心跳的一点。
如果您使用从服务器回拨到客户端的回拨,您需要一种客户端可以要求服务器憎恨所有丢失回叫的方式,这并不容易。
此外,如果您没有心跳,它并不意味着消息将不会在那里得到,因为可能会有各种网络延迟,只是不满意您的消息是安全的吗?
的心脏搏动是易位,该 硬位是做什么时,心脏 不打!
1
是的。 TCP只会显示物理连接仍然存在(即,套接字未被路由器或操作系统所吞噬)。但会告诉什么也没有关于应用程序可用性。如果管道另一端的进程处于while(1);
循环中,并且未处理您的请求,则说明您没有真正连接到它。
0
这是一个非常好的方式,可以知道您仍然在“应用程序级”连接到另一端,应用程序仍然可以通话。否则,你将不得不假设“另一端”没有什么可以“说”的,这很难与“35秒前实际丢失的网络连接的另一端”分开。
相关问题
- 1. 我必须使用BreezeController吗?
- 2. 我必须支持越狱iPhone吗?
- 3. 计时器必须保持删除
- 4. .net核心使用https/ssl。我必须重定向吗?
- 5. 每次我回发保留它时,我必须重写Cookie吗?
- 6. 我必须使用Form标签吗?
- 7. 我必须使用按钮吗?
- 8. Googe Maps:我必须使用Ionic Native吗?
- 9. 我必须使用wsgi_module的“def application”吗?
- 10. 我必须使用连接表吗? [MYSQL]
- 11. 我必须使用Flash Media Encoder吗?
- 12. 使用Backbone.js时,我必须使用后端吗?
- 13. 当持久化到磁盘时,我必须加密SecureString吗?
- 14. 使用SqlInstanceStore时,我必须显式配置持久性和卸载设置吗?
- 15. 使用PDO时,我必须禁用魔术引号吗?
- 16. 我必须做StringIO.close()吗?
- 17. 我必须致电sendResponse吗?
- 18. 我必须这样做吗?
- 19. 我必须重置webclient吗?
- 20. 我必须打开ngx_http_access_module吗?
- 21. 我必须关闭FileInputStream吗?
- 22. 我必须发布accessoryView吗?
- 23. 我必须在Javascript中跳出正斜杠吗?
- 24. 与两个线程通信时,我必须使用管道吗?
- 25. 在javascript中声明函数时,我必须使用`var`吗?
- 26. 如果我想使用Hibernate和Annotation,我必须使用javax.persistence。*吗?
- 27. TFS文件必须保持锁定
- 28. 我必须使用循环
- 29. 当我在UITableView中实现-scrollViewDidScroll:UIScrollViewDelegate时,我必须调用super吗?
- 30. get_or_create()必须立即保存吗? (Django)
当没有收到心跳时,当前的实现是紧密连接。 – Benny 2010-01-13 08:11:24