先就你的代码来讨论: 因为客户端还没完成登陆逻辑(这个回调还没完成呢),你的服务端就开始sendData,肯定是收不到的。 再来说说你这样实现离线消息是否合理: 现在主流的移动端IM都是先把离线消息存储起来(存到DB或redis中),等到客户端登陆时再使用http来“拉”,因为使用了http这样的通用协议,无论是客户端还是服务端,代码都简单太多了,而且未来的性能负载、业务扩展都会容易多了。所以,虽然这样做是可以实现离线消息的发送,仩你应该反思一下你的实现是否是最佳实践。 另外,建议你有时间的话可以系统地看看以下几篇文章,对你的理解会有很大帮助: 《IM消息送达保证机制实现(一):保证在线实时消息的可靠投递》 《IM消息送达保证机制实现(二):保证离线消息的可靠投递》 《如何保证IM实时消息的“时序性”与“一致性”?》 《一个低成本确保IM消息时序的方法探讨》 《IM单聊和群聊中的在线状态同步应该用“推”还是“拉”?》 《IM群聊消息如此复杂,如何保证不丢不重?》 《谈谈移动端 IM 开发中登录请求的优化》 《移动端IM登录时拉取数据如何作到省流量?》 《浅谈移动端IM的多点登陆和消息漫游原理》 《完全自已开发的IM该如何设计“失败重试”机制?》 |