我不是在寻找具体的答案,只是一个想法或一个提示。 我有以下问题:
Android应用程序是Web服务的客户端。它有一个线程,它通过http协议发送事件(带有请求ID的XML表单),并为每个请求服务器发送确认,他理解消息权限与授予的事件ID - 服务器是少数客户端的同步器。我想使用websocket协议通过websocket发送事件,但它有点棘手 - 而不是http,我不希望得到每个请求的响应。此外,传入的websocket消息在其他线程中解析。主要机制有点过度生长,我不想从头开始编写所有内容。
我想让这个异步websocket机制假装是同步的。 现在有我的想法 - 在通过websocket发送事件后,我将不再等待5秒钟的响应,这将在其他线程中处理(它以XML形式出现),并且对于请求ID,它将通知正确的暂停线程。我担心Condition.await()和condition.signal不是最好的主意,您怎么看?
根据这个问题,我意识到我在项目这种机制上遇到了问题。你有什么想法,我在哪里可以找到有关良好模式和提示的信息,以避免不良方法?提前谢谢!
答案 0 :(得分:0)
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