广播消息不存储问题

borened 5月前 199

目前广播消息,只能发送给在线的用户,如果用户不在线,上线之后则收不到消息。

服务端广播我使用的是文本类型,理论来说是可以持久化存储的。请问这个问题该如何解决?

        //消息体
        MessagePayload payload = TextMessageContentBuilder.newBuilder(inDto.getContent()).build();
        try {
            String sender = inDto.getSender()!=null ? inDto.getSender() : SysConstants.DEFAULT_MESSAGE_SENDER;
            IMResult<BroadMessageResult> imResult = MessageAdmin.broadcastMessage(sender, 0, payload);
}
最新回复 (4)
  • HeavyRain 5月前
    引用 2
    IM服务的逻辑是发给所有存在session的用户,也就是登录的才行。如果用户还没有登录过那就收不到消息
  • HeavyRain 5月前
    引用 3
    这个逻辑好像也有问题,比如用户退出登录了,但是还是在系统中的,应该能收到才行,我们可以改一下,改成用户表中的所有id+session表中存在过的id。你给我们提个issue跟踪一下这个问题吧
  • borened 5月前
    引用 4
    好的,目前如果要在应用层实现广播通知的效果,只能用单发或者群发的sdk发给系统中的所有用户对吧?
  • HeavyRain 5月前
    引用 5
    对,其实也是可以的,用群发每次发一千人,然后等待一两秒钟,实际上IM服务内部也是这样做的。等待时间可以长一点,让IM服务处理完防止把IM服务打死
返回