springboot集成websokcet+H5开发聊天原型(二)

本文没有写完~~~~

聊天相关数据结构: 

我们初步设计了如下几个数据结构。

//存放 sessionId 与 userId 的map

private Map<String,String> sessionId_userId =new HashMap<>();

// 用于存储用户与群组的关联关系,键为用户ID,值为群组ID列表 一个用户可以加入多个群组 它是一个Map,键是用户ID,值是群组ID列表

private Map<String, List<String>> userGroups = new HashMap<>();

// 用于存储群组信息,键为群组ID,值包含在线用户会话列表和历史消息列表
private Map<String, GroupInfo> groupInfos = new HashMap<>();

用户通过socket和服务端连接的时候,都会传递 
    public void handleMessage(WebSocketSession session, WebSocketMessage<?> message) throws Exception {
        LOGGER.info("WebSocket收到的消息: {}", message.getPayload());
        // 将消息反序列化,假设消息是JSON格式,这里解析为Message对象(下面定义)
        Message msg = objectMapper.readValue(message.getPayload().toString(), Message.class);
        String groupId = msg.getGroupId();
        String userId=msg.getUserId();
        int flag=this.checkUserIdAndSessionId(session.getId(),userId);  //检查userId和sessionId是否匹配
        //flag==0 说明userId和sessionId匹配 ,不做更多的操作 直接执行下面的代码
        if(flag==2){   //userId一致 但是 sessionId不一致,说明用户重新建立了session,要把原来该用户相关的session等全部删除掉
              //找到这个用户下原来所有的session,然后全部删除掉
            for (Map.Entry<String, String> entry : sessionId_userId.entrySet()) {
                String storedSessionId = entry.getKey();
                String storedUserId = entry.getValue();
                if (storedUserId.e
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值