IM 设计之群组聊天:基于 WebSocket 的群组消息订阅问题

本贴最后更新于 2273 天前,其中的信息可能已经渤澥桑田

先上代码

sockjs.min.js
stomp.min.js

  var socket = new SockJS("/endpointWisely");
  var stompClient = Stomp.over(socket);
  stompClient.connect({},function (frame){
    // 监听公共消息
    stompClient.subscribe("/topic/greetings",
      function (response){
        response = JSON.parse(response.body);
        console.log(response.data);
      });  
    // 监听个人消息
    stompClient.subscribe("/user/{userId}/message",
      function (response) {
        response = JSON.parse(response.body);
        console.log(response.data);
       });
    // 监听群组消息
    stompClient.subscribe("/topic/chat/{chatId}",
      function (response) {
        response = JSON.parse(response.body);
        console.log(response.data);      
       });});

群组消息订阅方式

  1. 通过群组 ID 进行订阅
    优点:
    1.后台无需进行任何处理,便能精准快捷推送至相关用户
    缺点:
    1.存在多个群时,需要在客户端多次订阅
  2. 通过公共频道进行推送
    优点:
    1.存在多个群时也只需进行一次订阅
    2.减少连接数,节省服务器资源
    缺点:
    1.后台需做消息处理判断消息类型及推送对象,影响推送速度

问题

是否存在更好的办法来解决群组消息订阅问题?个人认知有限,希望各位大神可以提出宝贵意见😄

根据讨论结果不定期更新帖子,更新时间:2018 年 01 月 28 日 上午 10:41

  • IM
    7 引用 • 15 回帖
  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 398 关注
  • 推送
    3 引用 • 10 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...