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

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

先上代码

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)。

    41 引用 • 156 回帖 • 633 关注
  • 推送
    3 引用 • 10 回帖

赞助商 我要投放

4 回帖
请输入回帖内容 ...
  • ronger

    @88250 D 大,黑客派的帖子评论提醒是怎样的订阅方式,我觉得帖子也有点类似于聊天室,或者说帖子的关注功能

  • 88250

    用同一个连接,后台区分业务推送。

    1 回复
  • ronger

    这样做有什么好处或者缺点吗?在即时聊天里是不是也适用啊😄

    1 回复
  • 88250

    减少服务器连接数,节省资源