我有一个非常简单的服务器,它使用带有“net”模块的 nodejs 创建。我还有一个使用 luasockets 连接到它的客户端。我正在测试连接大约 2 个月,使用不同的连接,如 3G、GPRS、WIFI,一切都很好。客户端在手机上运行。今天,在测试期间,连接到WIFI,我只是从一个房间走到另一个房间,并且从服务器[nodejs,net module using socket.write]发送的一些消息没有传递到我的客户端应用程序。没有错误,没有部分消息,只是在某个地方丢失了。在服务器上,socket.write() 总是返回 true。消息只是几个字节。就像我说的那样 - 服务器和客户端应用程序在 2 个月内经过多次测试,这是我第一次看到它。我可以一直重现它:
我的问题是..如何检查消息丢失的位置?如何解决这个问题?
编辑:我能够在我的路由器上运行 tcpdump 并发现发送的消息确实通过了路由器,但是它们延迟很大,并且它们被合并成一个数据包。我的 tcpdump foo 非常有限,我不确定是什么导致了延迟。我猜这是因为客户端无法接收消息,并且它们被缓冲在两者之间。无论如何,在如此长的时间内延迟和传递消息让我无法接受,我必须想办法处理它。