使用webSockets避免Nagle算法效果的最佳方法是什么?

时间:2014-10-15 12:23:01

标签: javascript android tcp websocket

我正在使用webSockets使用Java-WebSocket库将javascript webSocket客户端连接到java webSocketServer(来自Android应用程序)。 Android应用程序每隔几毫秒向javascript客户端发送一条小消息。

对于这种情况使用基本(和直观)方法,在javascript客户端内部测量的接收消息之间的延迟显示(近似地)以下模式: 200 ms,0.1 ms,0.1 ms,0.1 ms,0.1 ms,0.1 ms,0.1 ms,200 ms,0.1 ms,0.1 ms,0.1 ms,0.1 ms,0.1 ms,0.1 ms,200 ms,0.1 ms,0.1 ms ,0.1 ms,0.1 ms,0.1 ms,0.1 ms ......

这是Nagle算法的效果,默认设置,在发送之前聚集几条消息。

由于我还没有找到保证其停用的方法,我遵循this旧问题中提出的方法,从客户端向服务器发送确认消息,系统行为正常,但自从确认消息没有真正的目的(它更像是一个黑客),应该避免。

问题是,这仍是这个问题的最佳解决方案吗?你知道有什么方法可以避免聚集吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

由于在使用的库中似乎没有flush或setTCPNoDelay机制,并且没有提出其他解决方案,似乎确认消息解决方案仍然有效,是此问题的最佳解决方案。