Spring 来自客户端的stomp消息确认

Spring 来自客户端的stomp消息确认,spring,websocket,stomp,subscribe,Spring,Websocket,Stomp,Subscribe,我使用spring/stomp/websocket框架异步通知用户消息。我成功地做到了这一点。但是,我需要从客户端获取ACK,以便在完成此操作时可以执行一些服务器端操作 流量大致如下所示: 服务通知特定用户有关决策,并使用status=“notified”更新数据库中的记录 客户端接收消息(使用stompClient.subscribe(…) 客户端确认已收到该消息 服务“知道”此消息已被确认,并将数据库中的状态更新为“ACK” stompClient.connect({login:'guest

我使用spring/stomp/websocket框架异步通知用户消息。我成功地做到了这一点。但是,我需要从客户端获取ACK,以便在完成此操作时可以执行一些服务器端操作

流量大致如下所示:

  • 服务通知特定用户有关决策,并使用status=“notified”更新数据库中的记录
  • 客户端接收消息(使用stompClient.subscribe(…)
  • 客户端确认已收到该消息
  • 服务“知道”此消息已被确认,并将数据库中的状态更新为“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);
    
    在客户端上,在处理订阅的方法中,但无效

    有人能告诉我什么是处理确认的标准方式吗?我已经为此挣扎了几天,任何想法都会很有帮助


    谢谢

    根据使用
    ACK
    帧。服务器发送一个
    ack:some\u id
    头,客户端在
    ack
    框架中使用该
    some\u id

    对于简单代理,答案是

    简单代理非常适合入门,但只支持 STOMP命令的子集(例如,无确认、收据等)依赖于 简单的消息发送循环,不适合集群。作为 或者,应用程序可以升级到使用功能齐全的消息 经纪人


    我可以在收到消息后手动执行stompClient.send(…)来解决问题。这不是一个完美的ACK,我本来想用的,但现在它可以用了。了解SpringStompWS框架如何处理ACK是非常理想的。但是,spring在服务器端如何处理这个问题呢?