我使用spring/stomp/websocket框架异步通知消息的用户。我已经成功完成了这项工作但是,我会从客户端获得ACK,以便在完成此操作时可以执行一些服务器端操作。来自客户端的stomp消息确认
的流动大致为流:
- 服务通知的特定用户有关的决定并更新在DB的记录具有状态=“通知”
- 客户端接收消息(使用stompClient.subscribe (...))
- 客户端确认邮件已收到。
服务“知道”此消息已被确认,并将状态更新为DB中的“ACK”。
stompClient.connect({login:'guest', passcode:'guest'}, function(frame) { setConnected(true); **var headers = {ack: 'client'};** ... stompClient.subscribe('/user/guest/response',function(notification) { //doSomething }), **headers**); }
在服务上,发送消息:
this.messagingTemplate.convertAndSendToUser(user, "/response",msg, map);
有没有一种方法来处理在服务器端,客户端的ACK? 另外,我试图在客户端上做
stompClient.send("/app/response/ack/"+messageId);
,在处理订阅的方法,但不成功。
有人可以告诉我什么是处理确认的标准方式?我一直在为此奋斗几天,任何想法都会非常有帮助。
谢谢!
我可以通过在收到消息后手动执行stompClient.send(...)来解决我的问题。这不是一个完美的答案,我想使用,但现在可以使用。了解ACKs如何被spring stomp ws框架处理是理想的。 – myspri 2015-04-11 15:07:09