踩踏来自客户端的消息确认
stomp message acknowledgement from client
我正在使用 spring/stomp/websocket 框架来异步通知用户消息。我已经成功地做到了这一点。但是,我会从客户端获得 ACK,以便在完成后可以执行一些服务器端操作。
流量大致如下:
- 服务通知特定用户有关决定并更新数据库中状态为 "notified"
的记录
- 客户端收到消息(使用stompClient.subscribe(...))
- 客户端确认已收到消息。
服务 "knows" 已确认此消息并将数据库中的状态更新为 "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);
在客户端,在处理订阅的方法中,但是没有用。
有人可以告诉我处理确认的标准方法是什么吗?我已经为此苦苦挣扎了几天,任何想法都会很有帮助。
谢谢!
根据 spec 使用 ACK
框架。服务器发送 ack:some_id
header,客户端在 ACK
帧中使用 some_id
。
简单经纪人的答案是否。
https://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html
The simple broker is great for getting started but supports only a
subset of STOMP commands (e.g. no acks, receipts, etc.), relies on a
simple message sending loop, and is not suitable for clustering. As an
alternative, applications can upgrade to using a full-featured message
broker.
我正在使用 spring/stomp/websocket 框架来异步通知用户消息。我已经成功地做到了这一点。但是,我会从客户端获得 ACK,以便在完成后可以执行一些服务器端操作。
流量大致如下:
- 服务通知特定用户有关决定并更新数据库中状态为 "notified" 的记录
- 客户端收到消息(使用stompClient.subscribe(...))
- 客户端确认已收到消息。
服务 "knows" 已确认此消息并将数据库中的状态更新为 "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);
在客户端,在处理订阅的方法中,但是没有用。
有人可以告诉我处理确认的标准方法是什么吗?我已经为此苦苦挣扎了几天,任何想法都会很有帮助。
谢谢!
根据 spec 使用 ACK
框架。服务器发送 ack:some_id
header,客户端在 ACK
帧中使用 some_id
。
简单经纪人的答案是否。
https://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html
The simple broker is great for getting started but supports only a subset of STOMP commands (e.g. no acks, receipts, etc.), relies on a simple message sending loop, and is not suitable for clustering. As an alternative, applications can upgrade to using a full-featured message broker.