gpt4 book ai didi

java - 使WebSocket发送非阻塞

转载 作者:行者123 更新时间:2023-11-30 06:48:35 26 4
gpt4 key购买 nike

Jetty 使用 org.eclipse.jetty.websocket.common.BlockingWriteCallback 通过 websocket 发送消息。如果客户端“慢”,则此阻塞写入可能会挂起(例如参见此处https://github.com/eclipse/jetty.project/issues/272#issuecomment-290910610)

我使用 Jetty+Spring+Spring 的 Websocket 客户端成功模拟了慢速客户端。

我想“发送后忘记”websocket 消息,因此如果客户端速度很慢(无论它尝试做什么确认),这都不会影响 BrokerWriteCallback 的解析。使用 Jetty 实现这一目标的最佳方法是什么(配置或源代码编辑?)

当前 Jetty 版本 9.3.11.v20160721 与 Spring 4.3.3 一起使用。

最佳答案

jetty 有 slow serverslow client已经测试过了。

不存在“发送后忘记”这样的事情,因为这意味着无限缓冲。

有非阻塞发送选项,但强烈鼓励您注意FuturesCallbacks以了解是否本地端点已成功发送该消息(或未成功发送)。

Hint: don't send another message to a RemoteEndpoint if the prior one hasn't succeeded yet (you have network congestion decisions to deal with).

未能关注FuturesCallbacks触发内存错误(OOM)。

参见RemoteEndpoint :

如果所有这些看起来令人难以承受,请考虑使用构建在 websocket 之上的众多库之一来管理所有这些。

我鼓励您查看开源项目 cometd.org

关于java - 使WebSocket发送非阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43257736/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com