Spring STOMP - 立即回复

时间:2017-10-13 12:57:47

标签: spring angular spring-boot stomp

我正在实现一个通过STOMP连接到spring引导后端的Angular客户端。 当客户端连接并想要创建"业务组"时,所述组在后端创建并获得UUID;从那时起,其他客户端应该能够发送和接收来自该组的消息。

所以我在目的地创建了一个带有所述业务组ID的主题 - 类似于

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

但是我希望该组的创建者立即收到业务组ID,以便能够自己订阅它。并且能够与他人共享id(用户与用户)。

之前我使用过原始套接字,所以我只能使用连接用户的会话,然后在发送create-message后将id发回给他。但由于会话处理是基于业务组ID的(因此只有特定组中的用户才能接收来自该组的消息),所以按业务组ID划分的整个用户会话必须手动完成,而我正在寻找把它升级到为我做处理的东西。

但是我不知道如何通过弹簧踏板实现这一目标。所以我的问题是,这样一个群体的创建者是否有办法立即收到身份证作为对他的初始请求的答复/回应"? 因为在收到群组ID之前他无法订阅任何内容。

背景:

它基本上就像一个聊天应用程序,用户可以创建一个组/聊天室,然后与其他人共享(通过URL - 包含ID);然后,订阅它的每个人都可以从中接收消息并将消息发送到它。但要这样做,创建者首先需要创建的ID。

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。这可以通过@SendToUser

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

另一方面,您只需订阅' /user/topic/group.create'。