现在前后的的聊天实现分类:
1,通过轮询的方式。
2,通过长连接的方式。
优缺点:
第一种方式实现简单,但是实现起来会有很多坑。亲身经历过的,比如轮询会造成后端服务接口压力过大,前端也会有数据拼接展示的问题。
第二种方法是比较实际且可行的方法。下面我们来详细介绍下。
技术栈:
websocket协议,java后端服务语言,小程序前端,redis缓存等技术
实现步骤:
1,具体实现我们通过websocket来实现全都后端的消息实时通知,用redis实现后端服务节点之间的消息通知,这里redis的作用相当于一个消息队列作用等价于mq。我们通过pub,sub命令实现的一个mq。
java代码:
> public class MyWebSocket {
> // websocket类的作用域是每个session回话,所有这里不能通过spring来托管,需要通过手动的方式来创建一个bean对象
> private RedisService redisService = SpringBeanUtils.getBean(RedisService.class);
> //与某个客户端的连接会话,需要通过它来给客户端发送数据
> private Session session;
> //用以记录用户和房间号的对应关系(sessionId,room)
> private static HashMap<String, String> RoomForUser = new HashMap<String, String>();
> //用以记录房间和其中用户群的对应关系(room,List<用户>)
> public static HashMap<String, CopyOnWriteArraySet<User>> UserForRoom = new HashMap&