发布网友 发布时间:2022-03-27 16:29
共1个回答
热心网友 时间:2022-03-27 17:58
这不是 Android 和 iOS 或者 PC 的推送机制的区别,是新浪在各个客户端上不同的设计机制的区别。iOS 不允许 app 后台常驻进程,因此 app 只能选择通过 Apple 的 APNs 进程推送,这种推送是需要 app 的服务端主动发起对 Apple 服务器的连接,发送 Json 数据给 Apple 再由 Apple 的服务器通过与设备的长连接向设备推送。因为需要服务端主动发起,因此服务端需要一个 pub/sub 系统或者一个守护进程定时向微博数据库请求通知数据,然后发给 Apple 推送给设备。新浪的后台设计我们无从得知,这种几十秒的延时八成是由后台的架构造成的,因为新浪的通知量是非常大的,而 Apple 的通知应该是有频率*的(短时间内大量请求可能会被拒绝服务),不可能为每一条新浪通知发起一个 Apple push 通知,所以后台一个守护进程每隔几十秒取一次通知然后整合成一条 push 通知的可能性比较大,你看到的这几十秒的延时很有可能就是因为这个间隔。