使用websocket做即时通讯功能05————修复即使通讯的数据丢包问题

背景

接上一篇博客tomcat版本做即时通讯的问题记载,我们抛出了以下几个问题。

  • 单个tomcat的即时通讯有并发上线(200-1000)
  • 前端关闭连接后端并不一定得到立即的响应,浪费资源,并造成消息丢包
  • 通道被设备回收,前后端都不知情。导致前端消息发送不到后端,丢包。
    这一篇博客,我们就是为了稳定的消息系统而来的。
    首先,我们确认了后端单台服务器的处理能力有限,因此。我们需要做集群。其次我们为了不让前端关闭或回收,后端不响应。我们需要设置心跳,定时清除无关的连接。
    最后,我们需要有消息确认机制,做到保证消息的100%接收。

解决方案

  • 集群部署聊天(实现横向可扩展)
  • 消息确认机制,确认消息稳定的送达
  • 后端心跳处理不活跃的消息。
    因此我们大概有下面这几个业务线需要处理
    1.登陆-------->接收未读的消息-------->获取即时通讯地址------->连上即时通讯---------->开启心跳重连(http—>ws)
    2.发送消息-------->后端保存消息,并尝试推送消息(http—>ws)
    3.接收消息--------->告诉服务器确认接收(ws------>http)
    4.后端开启定时没收到消息主动断线

你可能感兴趣的:(使用websocket做即时通讯功能05————修复即使通讯的数据丢包问题)