2017-10-13 49 views
1

我正在實現一個通過STOMP連接到Spring Boot後端的Angular客戶端。 當客戶端連接並想要創建一個「業務組」時,該組將在後端創建並獲取UUID;從那時起,其他客戶端應該能夠發送和接收來自該組的消息。Spring STOMP - 即時響應

所以我創造與目的地上述業務組ID的主題 - 像

@MessageMapping("/foo/group/{id}") 

但是我想組的創建者立即接收業務組ID能夠訂閱它自己也是。並且能夠與其他人分享這個id(用戶到用戶)。

我之前使用過原始套接字,所以我只能使用連接的用戶會話,然後在發送創建消息之後將ID發回給他。但是,由於會話處理是基於業務組ID的(因此只有特定組中的用戶才能接收來自該組的用戶),所以按業務組ID標識的整個劃分用戶會話必須手動完成,而且我正在尋找把它升級到爲我處理的東西。

但我不知道如何實現這一點春季跺腳。所以我的問題是,有沒有辦法讓這樣的小組的創建者立即收到該ID作爲對他的最初「請求」的回答/迴應? 因爲他在收到組ID之前無法訂閱任何內容。

背景:

它基本上像一個聊天應用,其中用戶可以創建一個組/聊天室,然後與其他人共享(通過URL - 包含ID);每個訂閱了它的人都可以從中接收消息併發送消息。但要這樣做,創建者首先需要創建的ID。

回答

1

我找到了解決方案。這可以通過@SendToUser

@MessageMapping("/group.create") 
@SendToUser(value="/topic/group.create", broadcast=false) 
public Response createGroup(@Payload Message message) { 
    ... 
    return createResponseWithId(); 
} 

完成在另一端你只需要訂閱的/user/topic/group.create「。