0

弱弱的咨询一个问题:

业务场景

在做消息中心系统时,实现给所有在线用户实时推送对应用户的未读信息数量。

图片描述

当前实现方式

  • 顾虑到前端写轮询来定时拉取未读数量无法实现实时看到未读数量且用户浏览器页签过多时轮询请求过多给后端造成大量的服务器压力,所以没采用轮询。
  • 当前采用的方式是,后端有个轮询判断每个用户的未读信息,然后通过websocket来给在线的用户实时推送这个对应用户的未读数量。
  • spring boot服务端启用一个websocket端点:
    @ServerEndpoint(value = "websocket/{username}")
  • 客户端创建连接:
    admin用户:this.socket = new WebSocket("websocket/admin");
    jq用户this.socket = new WebSocket("websocket/jq")。

遇到的问题

后端查看TCP连接情况是发现TCP连接数量与用户数据挂钩,尽管用户下线后tcp会响应减少,
但是当在线用户越多的情况下TCP数量也会不断增加,导致后端服务器因TCP资源占用过大问题造成卡顿。

本次咨询的问题

1.这个TCP数量不断增多是websocket本身就会这样,还是我代码处理的有问题呢?
2.除了实现分布式websocket session之外还有其他解决方案吗?能否公用相同的TCP通道来避免创建N多个TCP? 
3.哪位好心人救我下:-)?

王继红 476
6月12日提问
0 个回答

撰写答案

推广链接