原文地址:http://www.cookqq.com/blog/8a10a5f35382ba2e0153c7a1125c20e7 客戶端與服務器保持長鏈接,服務器能夠很輕鬆的向客戶端推送消息。因爲網絡不穩定、程序不可能24小時都被程序運行,客戶端與服務器沒有創建長鏈接的時候,服務器怎麼向客戶端推送消息呢?? 一種方式:只要是客戶端開機,自動運行程序,自動和服務器保持長鏈接。 安全 ios手機若是程序退到後臺,必須斷開長鏈接,一直保持長鏈接不可能,若是你使用voip技術在後臺保持長鏈接,這個作法不能被appstore審覈經過 服務器 android手機後臺運行service,若是用戶強制關閉或者手機自動啓動,通常程序是不能啓動的~~ 另外一種方式:使用離線推送方式 架構 ios推送離校消息,蘋果有本身的規則,而且作的很好。 android的離線消息推送須要鏈接google地址,因爲國內訪問國外的網址太不穩定了,直接使用google提供的推送方式不理想。 android手機的離線推送消息是個難解的題,第一種方式程序很難一直在後臺運行,總有被殺死的時候,程序自動啓動這個功能google已經安全優化了,不是任何程序都能隨意啓動!! 第二種方式使用google提供的離線推送消息機制,因爲國內訪問國外的限制,也不能有效的解決問題。 spa 離線消息和在線消息只能分開,離線消息由於安卓上面會被各類因素影響,只能用大廠的推送通道,他們有足夠多的app能夠互相叫醒,在線消息得本身作,由於推送通道的響應速度不行。 手機首次和服務器端創建長鏈接成功以後,客戶端一樣也要和極光服務器端創建信任關係。客戶端在線狀態下,和服務器的消息交互都走本身的網絡通訊架構,不通過極光服務器。本身服務器重點處理在線用戶的消息。 當客戶端與服務器失去聯繫,服務器有消息須要推送給這個客戶端的時候,服務器直接把消息推送給極光服務器,再經過極光推送給客戶端。這個過程咱們能夠理解成不要求及時性~~~ |