我正在分析电报或whatsapp等聊天应用程序。如您所知,他们正在使用tcp连接到服务器。 tcp连接的一个大问题是,当互联网连接出现问题时,xmpp客户端将与服务器断开连接而不告诉服务器我已断开连接,并且将从服务器打开tcp连接,并且消息将丢失。
因此,客户端和服务器理解连接丢失的一种方法是使用ping。我们设置服务器和客户端相互ping通的时间,如果连接丢失则重试连接。并且这个解决方案的主要问题是它耗尽了大量的电池充电,例如我们将客户端设置为每10秒ping一次,如果我们将服务器设置为每40秒ping一次,那么当我们在服务器上时它会给服务器带来很大的负担处理大量用户。
但是电报和whatsapp没有这个问题,因为他们会理解tcp连接丢失了30秒,电报甚至更快,它将在4或5秒内知道。
我的问题是,我不认为whatsapp或电报使用ping系统实际上每10秒ping一次服务器,因为它会耗尽电池。
你的想法是什么?他们是使用ping系统还是找到了解决方案。
如果有人向我解释他们是如何做的,我会非常感激
答案 0 :(得分:3)
TCP本身有一种检测连接丢失的方法,因此您根本不需要ping。但是,如果通常的TCP方式不够快,您可以制作更高级别的心跳信号。
答案 1 :(得分:1)
您需要有一些keepalive机制,并让您的服务器通过错过keepalive来检测连接丢失。否则,根据服务器配置,检测TCP级别的连接丢失可能需要很长时间。