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

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

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

根据这个问题,我意识到我在设计这种机制时遇到了问题。您有什么主意,在哪里可以找到关于好的模式和技巧的信息,这些信息目前对避免错误的做法有帮助?提前致谢!

最佳答案

websocket和HTTP请求之间的唯一区别是消息进入时缺少HTTP标头。在websocket中,您有一个使连接保持活动状态并允许全双工通信的心跳,然后才有了纯净的有效负载。查找将用于在服务器/客户端中正确路由请求的消息头是您的工作。

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

https://tools.ietf.org/html/rfc6455

如果您更直观一些,此幻灯片可以帮助您:

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

或者,如果您想以更严肃的实现为例,请查看spring的文档:

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

10-07 19:41
查看更多