stompjs如何在发送消息后获取状态
stompjs how to get status after sending message
我正在使用 spring 启动 websocket、STOMP 和 stompjs 创建一个聊天应用程序,这是我的 js 代码:
<script src="https://cdnjs.cloudflare.com/ajax/libs/sockjs-client/1.1.4/sockjs.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/stomp.js/2.3.3/stomp.min.js"></script>
<script>
//some code
//send message
stompClient.send("/app/chat.sendMessage", {}, JSON.stringify(chatMessage));
</script>
后端代码:
@MessageMapping("/chat.sendMessage")
public MessageDTO sendMessage(@Payload MessageDTO chatMessage) {
//HERE
if(!validatorService.validate(chatMessage)) {
throw new RuntimeException("invalid");
}
messagingTemplate.convertAndSend("/topic/public", chatMessage);
return chatMessage;
}
你可以看到我return的消息。在 js 端无论如何都可以接收这个对象,比如
stompClient.send("/app/chat.sendMessage", {}, JSON.stringify(chatMessage), callback);
当 STOMP 客户端发送 MESSAGE
帧时,它通常根本不会从代理那里得到任何响应。但是,如果 MESSAGE
帧包含 receipt
header,它 可能 返回 RECEIPT
frame。你没有设置这个 header 所以你不应该期望从经纪人那里得到任何回应。
如果您想获得某种 application-specific 响应,则需要在 JavaScript 应用程序中创建一个订阅者,并且 server-side 应用程序需要向无论消费者在哪里收听。这是经典request/reply messaging pattern.
我正在使用 spring 启动 websocket、STOMP 和 stompjs 创建一个聊天应用程序,这是我的 js 代码:
<script src="https://cdnjs.cloudflare.com/ajax/libs/sockjs-client/1.1.4/sockjs.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/stomp.js/2.3.3/stomp.min.js"></script>
<script>
//some code
//send message
stompClient.send("/app/chat.sendMessage", {}, JSON.stringify(chatMessage));
</script>
后端代码:
@MessageMapping("/chat.sendMessage")
public MessageDTO sendMessage(@Payload MessageDTO chatMessage) {
//HERE
if(!validatorService.validate(chatMessage)) {
throw new RuntimeException("invalid");
}
messagingTemplate.convertAndSend("/topic/public", chatMessage);
return chatMessage;
}
你可以看到我return的消息。在 js 端无论如何都可以接收这个对象,比如
stompClient.send("/app/chat.sendMessage", {}, JSON.stringify(chatMessage), callback);
当 STOMP 客户端发送 MESSAGE
帧时,它通常根本不会从代理那里得到任何响应。但是,如果 MESSAGE
帧包含 receipt
header,它 可能 返回 RECEIPT
frame。你没有设置这个 header 所以你不应该期望从经纪人那里得到任何回应。
如果您想获得某种 application-specific 响应,则需要在 JavaScript 应用程序中创建一个订阅者,并且 server-side 应用程序需要向无论消费者在哪里收听。这是经典request/reply messaging pattern.