簡體   English   中英

Spring Boot + Websocket(SockJS)

[英]Spring Boot + Websocket (SockJS)

我正在嘗試創建一個服務器,以便在發生更改時通知已連接的客戶端。 為此,我使用Spring Boot作為服務器。 為了傳遞通知,每個客戶端都與服務器建立套接字。 我使用了這個指南: https//spring.io/guides/gs/messaging-stomp-websocket/它完美無缺。 在此示例中,客戶端通過套接字發送消息,服務器響應。

  1. 問題是我無法找到服務器向客戶端發送消息的方式,而無需客戶端先發送消息!
  2. 是否可以列出所有連接的websockets?

謝謝,

我的答案:

  1. 客戶端不需要發送消息,但他們必須連接和訂閱。 我實際上是在瀏覽器連接和訂閱然后開始發送消息的應用程序中自己做的。 在服務器端,您可以使用SimpMessagingTemplate對象自動裝配服務(或其他組件),然后使用convertAndSend系列函數將事物發送給特定用戶或所有訂戶。 如果您查看投資組合項目,您可以看看price.stock主題是如何完成的。 客戶端連接並訂閱,服務器具有要發送給它的預定作業。 此服務使用MessageSendingOperations對象,但您可以使用上面提到的SimpMessagingTemplate。 我在我們的應用程序服務中有這個代碼:

     @Autowired private SimpMessagingTemplate messagingTemplate; ... messagingTemplate.convertAndSendToUser(userId, destination, jsonMessage); 
  2. 這個問題有一些關於找到所有用戶的好信息。 看起來您需要使用Spring文檔中定義的事件來處理STOMP上下文事件 ,以便在需要時自己跟蹤事物。 通常,因為這是訂閱模型,您可能不需要知道誰連接。 您還可以構建自己的主題,發出請求,讓所有客戶回復並查找他們的帖子。 我自己沒有這樣做,但Rossen(其中一位評論員)是該項目的主要作者之一,所以我相信他!

希望這會有所幫助。 讓我知道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM