我正在使用 spring boot 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;
}
你可以看到我回了訊息。在 js 方面無論如何都可以接收這個物件,比如
stompClient.send("/app/chat.sendMessage", {}, JSON.stringify(chatMessage), callback);
uj5u.com熱心網友回復:
當一個 STOMP 客戶端發送一個MESSAGE幀時,它通常根本不會從代理那里得到任何回應。但是,如果幀包含標題,它可能會回傳一個RECEIPT幀。您沒有設定此標頭,因此您不應該期望從代理回傳任何回應。MESSAGEreceipt
如果您想獲得某種特定于應用程式的回應,那么您需要在您的 JavaScript 應用程式中創建一個訂閱者,并且服務器端應用程式需要向該消費者正在收聽的任何地方發送訊息。這是經典的請求/回復訊息模式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/443677.html
標籤:javascript 爪哇 春天 跺脚 跺脚
上一篇:如何在運行時呼叫API端點?
下一篇:帶有更改日期的CASE宣告
