gpt4 book ai didi

java - 假装同步的异步 websocket 机制

转载 作者:太空宇宙 更新时间:2023-11-04 15:04:09 26 4
gpt4 key购买 nike

我不是在寻找具体答案,只是一个想法或提示。我有以下问题:

Android 应用程序是 Web 服务的客户端。它有一个线程,通过 http 协议(protocol)发送事件(带有请求 ID 的 XML 形式),并且对于每个请求,服务器都会发送确认,表明他正确地理解了授予事件 ID 的消息 - 服务器是少数客户端的同步器。我也想使用 websocket 协议(protocol)通过 websocket 发送事件,但这有点棘手 - 而不是 http,我不希望得到每个请求的响应。此外,传入的 websocket 消息在其他线程中解析。主要机制有点杂乱,我不想从头开始编写所有内容。

我想让这个异步websocket机制假装是同步的。现在我的想法是 - 通过 websocket 发送事件后,我将不再等待例如 5 秒的响应,该响应将在其他线程中处理(它以 XML 形式出现),并且关于请求 ID,它会通知适当的暂停线程。我担心 Condition.await() 和 condition.signal 不是最好的主意,你觉得怎么样?

根据这个问题,我意识到我在项目这种机制方面存在问题。您是否有想法,我在哪里可以找到有关良好模式和技巧的信息,这些信息对现在有好处,可以避免不良方法?提前致谢!

最佳答案

websocket 和 HTTP 请求之间的唯一区别是消息传入时缺少 HTTP header 。在 websocket 中,您有一个心跳来保持连接处于 Activity 状态并允许全双工通信,然后您就拥有了纯有效负载。您的工作是找到将使用哪些消息 header 在服务器/客户端中正确路由请求。

因此,这并不能阻止您通过在接收后立即写入输出流来以请求/响应方式进行通信。我建议你看一下 RFC

https://www.rfc-editor.org/rfc/rfc6455

如果您更注重视觉效果,此幻灯片可以提供帮助:

http://www.slideshare.net/sergialmar/websockets-with-spring-4

或者,如果您想要一些更严肃的实现作为示例,请查看 spring 的文档:

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html

关于java - 假装同步的异步 websocket 机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22225008/

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