Spring Websocket 中的 Direct、Group、Channel 需要多少端点和主题?

How many endpoint and topic need for Direct ,Group,Channel in Spring Websocket?

我想编写在用户之间进行消息传递的应用程序, 用户之间发送的消息有 3 种类型

  1. 直接
  2. 渠道:仅从管理员发送

我的应用程序将在 RDBMS 中保存消息。当新消息发送和接收用户在线时,我的应用程序将通知用户收到新消息,我决定使用 Spring Websocket 和 Stomp 编写我的应用程序。我的应用程序使用 spring 安全性并且我想要显示群组中的在线用户并指导其他成员 我的问题是知道我需要多少端点和代理?以及如何做到这一点。

更新:

我的应用程序类似于 gitter 和 slack ,当用户登录消息可能从直接或群组或频道接收时。当我在用户和组或频道之间切换时,我将从最后一个取消订阅并订阅我聊天的用户或组。我不知道订阅和取消订阅是正确的还是只有一个订阅。 这种用法是否正确?

chatSocket.subscribe("/user/exchange/direct/chat.message/{userId}", function(message) {});


chatSocket.subscribe("/topic/group/chat.message/{groupId}", function(message) {});
  • 对于直接消息,使用用户目的地。
  • 对于只能由管理员发送的消息,限制发布给具有该角色的用户并允许其他用户订阅(Spring 安全)
  • 如果您想广播消息,请使用代理目的地(或应用程序目的地,如果您需要添加一些登录信息)

存储消息的一个选项可能是添加一个通道拦截器。使用户在建立 websocket 连接时订阅应用目的地,并发送他在线时发送的存储消息。

这个示例应用程序可以给您一些提示:https://github.com/salmar/spring-websocket-chat