2015-03-30 95 views
6

我使用spring/stomp/websocket框架异步通知消息的用户。我已经成功完成了这项工作但是,我会从客户端获得ACK,以便在完成此操作时可以执行一些服务器端操作。来自客户端的stomp消息确认

的流动大致为流:

  1. 服务通知的特定用户有关的决定并更新在DB的记录具有状态=“通知”
  2. 客户端接收消息(使用stompClient.subscribe (...))
  3. 客户端确认邮件已收到。
  4. 服务“知道”此消息已被确认,并将状态更新为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); 

,在处理订阅的方法,但不成功。

有人可以告诉我什么是处理确认的标准方式?我一直在为此奋斗几天,任何想法都会非常有帮助。

谢谢!

+0

我可以通过在收到消息后手动执行stompClient.send(...)来解决我的问题。这不是一个完美的答案,我想使用,但现在可以使用。了解ACKs如何被spring stomp ws框架处理是理想的。 – myspri 2015-04-11 15:07:09

回答

1

根据spec使用ACK框架。服务器发送一个ack:some_id标题,客户端在ACK框架中使用some_id

+1

但是,如何不在服务器端处理这个问题呢? – user1633272 2017-06-29 13:24:19

相关问题