2017-10-13 10 views
1

私はSTOMP経由でスプリングブートバックエンドに接続するAngularクライアントを実装しています。 クライアントが接続して「ビジネスグループ」を作成する場合、前記グループはバックエンドで作成され、UUIDを取得します。その瞬間から他のクライアントはそのグループにメッセージを送受信できるようになります。Spring STOMP - 即時応答

だから、私は、トピックを作成していますビジネスグループIDは、先に述べた -

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

のようなもの、私はグループの作成者がすぐに加入できるようにするには、ビジネス・グループIDを受信したいがそれだけでなく。そして、IDを他の人と共有することができるように(ユーザーからユーザー)

これまではrawソケットを使用していましたので、接続されたユーザーのセッションを使用して、作成メッセージを送信した後でIDを返すことができました。しかし、セッション処理はビジネスグループIDベース(特定のグループのユーザーだけがそのグループからのメッセージを受信するように)であるため、ビジネスグループIDによるユーザーセッションの分割はすべて手動で行う必要があり、これを私のために扱うものにアップグレードしてください。

しかし、私はスプリングストンプでこれを達成する方法がわかりません。だから私の質問は、そのようなグループの作成者が最初の "要求"に対する答え/応答としてIDをすぐに受け取る方法があるということですか? 彼はグループIDを受け取る前に何も購読することができません。

背景:

それは(URL経由 - IDが含まれている)ユーザーがグループ/チャットルームを作成し、他のユーザーと共有することができますチャットアプリのよう基本的です。それを購読している誰もがそこからmsgsを受け取り、そこにmsgsを送ることができます。しかしそうするためには、作成者は最初に作成したIDが必要です。

答えて

1

解決策が見つかりました。これは、あなただけの「/user/topic/group.create」に加入する必要があるもう一方の端に@SendToUser

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

を介して行うことができます。