2019独角兽企业重金招聘Python工程师标准>>>
原文地址:http://www.cookqq.com/blog/8a10a5f35382ba2e0153c7a1125c20e7 客户端与服务器保持长连接,服务器可以很轻松的向客户端推送消息。由于网络不稳定、程序不可能24小时都被程序运行,客户端与服务器没有建立长连接的时候,服务器怎么向客户端推送消息呢?? 一种方式:只要是客户端开机,自动运行程序,自动和服务器保持长连接。 ios手机如果程序退到后台,必须断开长连接,一直保持长连接不可能,如果你使用voip技术在后台保持长连接,这个做法不能被appstore审核通过 android手机后台运行service,如果用户强制关闭或者手机自动启动,一般程序是不能启动的~~ 另一种方式:使用离线推送方式 ios推送离校消息,苹果有自己的规则,并且做的很好。 android的离线消息推送需要连接google地址,由于国内访问国外的网址太不稳定了,直接使用google提供的推送方式不理想。 android手机的离线推送消息是个难解的题,第一种方式程序很难一直在后台运行,总有被杀死的时候,程序自动启动这个功能google已经安全优化了,不是任何程序都能随意启动!! 第二种方式使用google提供的离线推送消息机制,由于国内访问国外的限制,也不能有效的解决问题。 离线消息和在线消息只能分开,离线消息因为安卓上面会被各种因素影响,只能用大厂的推送通道,他们有足够多的app可以互相叫醒,在线消息得自己做,因为推送通道的响应速度不行。
手机首次和服务器端建立长连接成功之后,客户端同样也要和极光服务器端建立信任关系。客户端在线状态下,和服务器的消息交互都走自己的网络通信架构,不经过极光服务器。自己服务器重点处理在线用户的消息。
当客户端与服务器失去联系,服务器有消息需要推送给这个客户端的时候,服务器直接把消息推送给极光服务器,再通过极光推送给客户端。这个过程我们可以理解成不要求及时性~~~ |