Jetty使用 org.eclipse.jetty.websocket.common.BlockingWriteCallback 通过websocket发送消息。如果客户端“慢”,则此阻止写入可能会遇到挂起(请参阅此处https://github.com/eclipse/jetty.project/issues/272#issuecomment-290910610)
我使用Jetty + Spring + Spring的Websocket Client成功模拟了慢客户端。
我想“发送并忘记”websocket消息,因此如果客户端很慢(无论它尝试做什么确认),这都不会影响BrokerWriteCallback的解析。使用Jetty(配置或源代码编辑?)
实现这一目标的最佳方法是什么?目前与Spring 4.3.3一起使用的Jetty版本9.3.11.v20160721。
答案 0 :(得分:1)
Jetty已经进行了slow server和slow client次测试。
没有"发送和忘记",因为这意味着无限缓冲。
有非阻止发送选项,但强烈鼓励您注意export PATH=$PATH:/usr/local/bin/
或Futures
以了解本地端点是否已成功发送该选项消息(或不)。
提示:如果前一个消息尚未成功(您有网络拥塞决策需要处理),请不要向RemoteEndpoint发送另一条消息。
未注意Callbacks
或Futures
将触发内存错误(OOM)。
请参阅RemoteEndpoint
:
如果所有这些看起来都是压倒性的,请考虑使用在websocket之上构建的众多库中的一个来管理所有这些。
我建议您查看开源项目cometd.org