Nous avons une application avec un schéma d'interrogation long sur HTTP (bien que cette question puisse s'appliquer à tout protocole TCP). Notre délai d'attente est assez élevé, 30 minutes environ. Ce que nous voyons parfois, c'est que les appareils mobiles sautent assez souvent d'IP à IP, à chaque minute, ce qui provoque l'accumulation de douzaines de sockets à vie longue sur le serveur. Je ne peux pas m'empêcher de penser que cela cause plus de charge que nécessaire.Connexions TCP persistantes, longs délais d'attente et appareils mobiles IP hopping
Donc, je suppose que certaines passerelles IP sont meilleures que d'autres lors de la fermeture des connexions lorsqu'un périphérique saute. Les stratégies que je peux penser à faire face à ce sujet sont:
- Diminution du délai d'attente (l'augmentation de la vie de la batterie sur l'appareil)
- Fermez la dernière connexion active lorsqu'un reconnexions utilisateur (nécessite cookies ou de suivi de l'ID utilisateur)
D'autres?
Je suis un peu inquiet au sujet de keepalives puisque toute activité de données réveille la radio - c'est pourquoi je l'ai réglé à 30 minutes. Vous ne savez pas quoi faire à propos des délais d'attente de pare-feu non plus, ne le remarquerez pas sur le serveur aussi facilement :( – sehugg
@sehugg Sur le réseau où vous êtes, l'appareil obtient-il une adresse IP publique? Si oui, une méthode que j'ai vu avec succès, lorsque l'appareil reçoit une adresse IP, il s'enregistre auprès du serveur, puis il écoute uniquement les connexions entrantes, et le serveur se connecte à l'appareil lorsque quelqu'un a quelque chose pour cela. L'autre moyen consiste à envoyer un SMS à l'appareil, et votre appareil intercepte le SMS pour réveiller l'application afin de faire quelque chose –
Je n'ai pas eu de chance avec la connexion à l'appareil - essayé ceci une fois avec UDP.Maintenant, je comprends la valeur des services comme Apple APNS et C2DM de Google :) – sehugg