我們有一個應用程序通過HTTP的長輪詢方案(儘管這個問題可能適用於任何基於TCP的協議)。我們的暫停時間相當長,30分鐘左右。持久的TCP連接,長時間的超時和IP跳頻移動設備
我們有時會看到,移動設備經常會每隔一分鐘左右從IP跳轉到IP,這會導致數十個長壽命的套接字堆積在服務器上。不禁覺得這比起需要造成更多的負擔。
所以我猜測,有些IP網關在關閉連接時比其他設備更好。我能想到的解決這個問題的策略是:
- 減少超時(在設備上增加電池壽命)
- 關閉最後一個活動連接,當用戶重新連接(需要Cookie或用戶ID追蹤)
其他?
我有點擔心keepalives,因爲任何數據活動都會喚醒收音機 - 這就是爲什麼我將它設置爲30分鐘。不知道有什麼關於防火牆超時,也不會在服務器上很容易地注意到它:( – sehugg 2010-10-19 16:18:40
@sehugg在您所在的網絡上,設備是否獲得公共IP地址?如果是這樣,我見過的一種方法當設備獲得IP地址,向服務器註冊,然後只是監聽未連接的連接,服務器連接到設備時,設備就會成功。但是,運營商並不十分支持這一點並可能會將其鎖定;另一種方法是向設備發送短信,並讓設備攔截短信以喚醒應用程序以執行某些操作。 – 2010-10-19 18:33:09
我還沒有連接到設備的運氣 - 嘗試過一次使用UDP。現在我明白像Apple的APNS和Google的C2DM這樣的服務的價值了:) – sehugg 2010-10-20 11:41:44