我使用带有'net'模块的nodejs创建了一个非常简单的服务器。 我还有一个使用luasockets连接到它的客户端。 我正在测试连接2个月了,使用3G,GPRS,WIFI等不同的连接,一切都很好。客户端在手机上运行btw。 今天,在测试期间,连接到WIFI,我只是从一个房间走到另一个房间,从服务器[nodejs,使用socket.write的网络模块]发送的一些消息没有传递到我的客户端应用程序。 没有错误,没有部分消息,它只是在某处丢失了。 在服务器上,socket.write()始终返回true。消息只是几个字节。 就像我说的那样 - 服务器和客户端应用程序在2个月的时间内进行了多次测试,这是我第一次看到它。 我可以一直重现它:消息从服务器发送但不到达客户端。
我的问题是..如何查看邮件丢失的位置?如何解决这个问题?
编辑: 我能够在我的路由器上运行tcpdump并发现发送的消息确实通过了路由器,但是它们以很大的延迟执行它们并且它们被合并到一个数据包中。 我的tcpdump foo非常有限,我不确定导致延迟的原因。我想这是因为客户端无法接收消息,并且它们在两者之间缓冲。 无论如何,在如此长的时间内延迟和传递消息使我无法接受这一点,我必须找到一些方法来处理它。
答案 0 :(得分:0)
我们决定在客户端之间以及客户端和服务器之间添加另一种类型的消息来检查连接状态。 我们将使用1秒计时器从一个客户端向另一个客户端发送消息,如果客户端没有收到超过3秒的消息,他们将认为连接被中断并将向服务器发送消息,以检查是否连接使用服务器是可以的[只是让用户知道问题出在哪里]。