Browse Source

fix: 系统消息多终端下bug

master
xsx 2 years ago
parent
commit
72c596864b
  1. 40
      im-server/src/main/java/com/bx/imserver/netty/processor/SystemMessageProcessor.java

40
im-server/src/main/java/com/bx/imserver/netty/processor/SystemMessageProcessor.java

@ -26,27 +26,29 @@ public class SystemMessageProcessor extends AbstractMessageProcessor<IMRecvInfo>
@Override @Override
public void process(IMRecvInfo recvInfo) { public void process(IMRecvInfo recvInfo) {
IMUserInfo receiver = recvInfo.getReceivers().get(0); log.info("接收到系统消息,接收用户数量:{},内容:{}", recvInfo.getReceivers().size(), recvInfo.getData());
log.info("接收到系统消息,接收者:{},内容:{}", receiver.getId(), recvInfo.getData()); for (IMUserInfo receiver : recvInfo.getReceivers()) {
try { try {
ChannelHandlerContext channelCtx = UserChannelCtxMap.getChannelCtx(receiver.getId(), receiver.getTerminal()); ChannelHandlerContext channelCtx =
if (!Objects.isNull(channelCtx)) { UserChannelCtxMap.getChannelCtx(receiver.getId(), receiver.getTerminal());
// 推送消息到用户 if (!Objects.isNull(channelCtx)) {
IMSendInfo<Object> sendInfo = new IMSendInfo<>(); // 推送消息到用户
sendInfo.setCmd(IMCmdType.SYSTEM_MESSAGE.code()); IMSendInfo<Object> sendInfo = new IMSendInfo<>();
sendInfo.setData(recvInfo.getData()); sendInfo.setCmd(IMCmdType.SYSTEM_MESSAGE.code());
channelCtx.channel().writeAndFlush(sendInfo); sendInfo.setData(recvInfo.getData());
// 消息发送成功确认 channelCtx.channel().writeAndFlush(sendInfo);
sendResult(recvInfo, IMSendCode.SUCCESS); // 消息发送成功确认
} else { sendResult(recvInfo, IMSendCode.SUCCESS);
} else {
// 消息推送失败确认
sendResult(recvInfo, IMSendCode.NOT_FIND_CHANNEL);
log.error("未找到channel,接收者:{},内容:{}", receiver.getId(), recvInfo.getData());
}
} catch (Exception e) {
// 消息推送失败确认 // 消息推送失败确认
sendResult(recvInfo, IMSendCode.NOT_FIND_CHANNEL); sendResult(recvInfo, IMSendCode.UNKONW_ERROR);
log.error("未找到channel,接收者:{},内容:{}",receiver.getId(), recvInfo.getData()); log.error("发送异常,,接收者:{},内容:{}", receiver.getId(), recvInfo.getData(), e);
} }
} catch (Exception e) {
// 消息推送失败确认
sendResult(recvInfo, IMSendCode.UNKONW_ERROR);
log.error("发送异常,,接收者:{},内容:{}", receiver.getId(), recvInfo.getData(), e);
} }
} }

Loading…
Cancel
Save