我通过WebSocket向Tomcat Server发送一条消息,使用Spring方法将消息传递给SockJSClient:
WebSocketSession.sendMessage(WebSocketMessage<?> message)
我想知道收到消息的时间(最终有补充信息,例如客户端上的逻辑是否成功处理),然后转到下一条消息。
这是一个解释用例的活动图。
我如何收到客户的接待确认或结果?
答案 0 :(得分:2)
正如Erwin所指出的,你可以采用一些更高的协议来提供像STOMP这样的功能。但是,如果您不敢仅为该功能采用它,则可以自己实现该功能。
id
标识每封邮件,type
标识每封邮件的目的,data
传输邮件的内容,reply
这是一个标志,用于查看是否需要ACK,并使用类似JSON的格式将包含这些数据的对象序列化/反序列化到WebSocket消息中/从WebSocket消息中反序列化。id
来创建对象,将type
设置为message
并将data
设置为给定消息并{{1如果需要ACK,则为reply
;如果不是,则为true
。它将它序列化为JSON并将其作为WebSocket消息发送。 - https://github.com/cettia/cettia-protocol/blob/1.0.0-Alpha1/lib/server.js#L88-L110 false
为reply
,则会发送一条特殊邮件,其true
为type
设置reply
到该邮件的data
。然后,对方可以确认其对方已收到id为id
的消息。 - https://github.com/cettia/cettia-protocol/blob/1.0.0-Alpha1/lib/server.js#L46-L76 以上链接指出Cettia中的类似实现,这是我编写的实时Web应用程序框架。虽然该实现有点复杂,因为它旨在允许用户处理带有结果的回调,但您可能会得到基本的想法。
该链接实现的API如下所示。
需要事件处理结果的服务器或客户端。
id
相应的客户或服务器,负责提交结果。
// Using Java server with lambda
socket.send("foo", "bar", result -> /* resolved */, reason -> /* rejected */);