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

时间:2017-06-22 18:58:36

标签: spring spring-boot websocket spring-websocket spring-messaging

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

  1. 直接
  2. 频道:只需从管理员发送
  3. 我的应用程序将在RDBMS中保存消息。当新消息发送和接收者用户在线时,我的应用程序将通知用户新消息接收,我决定使用Spring Websocket和Stomp。我的应用程序使用spring security编写我的应用程序,并且我希望在组中显示在线用户并直接用于每个其他成员 我的问题是我需要多少端点和经纪人?怎么能做到这一点。

    更新

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

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

1 个答案:

答案 0 :(得分:2)

  • 对于直接消息,请使用用户目的地。
  • 对于只能由管理员发送的邮件,限制向具有该角色的用户发布并允许其他用户订阅(使用Spring Security)
  • 如果您要广播消息,请使用经纪人目的地(如果您需要添加一些登录,请使用应用目的地)

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

此示例应用程序可以为您提供一些提示:https://github.com/salmar/spring-websocket-chat