IMSwitchHandlerImpl.java 文件源码

java
阅读 30 收藏 0 点赞 0 评论 0

项目:sctalk 作者:
@Override
    public void switchP2p(IMHeader header, MessageLite body, ChannelHandlerContext ctx) {
//        IMSwitchService.IMP2PCmdMsg p2pCmdMsg = (IMSwitchService.IMP2PCmdMsg) body;
//        long toId = p2pCmdMsg.getToUserId();

        // FIXME 需要确认一下逻辑
//        ClientConnection clientConn = ClientConnectionMap.getClientByUserId(String.valueOf(toId));
//        if (clientConn != null) {
//            clientConn.getCtx().writeAndFlush(new IMProtoMessage<IMSwitchService.IMP2PCmdMsg>(header.clone(), p2pCmdMsg));
//        }
        IMSwitchService.IMP2PCmdMsg p2pCmdMsg = (IMSwitchService.IMP2PCmdMsg)body;
        // 设置用户的ID
        long userId = super.getUserId(ctx);
        p2pCmdMsg = p2pCmdMsg.toBuilder().setFromUserId(userId).build();

        IMProtoMessage<MessageLite>  swithP2pMsg = new IMProtoMessage<MessageLite>(header, body);

        long toId = p2pCmdMsg.getToUserId();
        long fromId =  p2pCmdMsg.getFromUserId();

        ClientUser toClientUser = ClientUserManager.getUserById(toId);

        ClientUser fromClientUser = ClientUserManager.getUserById(fromId);

        //处理是否正确需要确认?
        if (toClientUser != null ){
            toClientUser.broadcast(swithP2pMsg, ctx);
        }

        if (fromClientUser != null) {
            fromClientUser.broadcast(swithP2pMsg, null);
        }

        ClientUserManager.broadCast(swithP2pMsg, SysConstant.CLIENT_TYPE_FLAG_BOTH);

        // 通过路由进行转发
        // routerHandler.send(header, body);
        messageServerCluster.send(header, body);
    }
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号