0

là. Je suis actuellement en train de faire un programme python net-chat. Actuellement, il ne fonctionne que sur un réseau local et ne peut pas envoyer de messages aux clients connectés en dehors du réseau en raison du pare-feu de leur routeur bloquant les messages qui leur sont envoyés. Donc, ma question est: Comment les applications de messagerie "contourner" les pare-feu pour envoyer des messages aux clients? Est-ce qu'ils utilisent quelque chose comme "aller chercher" les informations du serveur et cela leur renvoie le message? Mais même cela utiliserait de grandes quantités de batterie si elle allait chercher chaque seconde. Et aller chercher chaque minute est juste impraticable. Je pensais qu'ils utilisent plus d'un protocole "push" un peu comme mon serveur IMAP "pousse" mes e-mails sur mon téléphone portable. Mais comment ces connexions passent-elles par le pare-feu?Comment les applications de messagerie «contournent» les pare-feu?

+0

Ils connectent leurs sockets sur le port 443 qui n'est pas bloqué normalement –

+0

Mais comment le routeur sait-il quel client envoyer le message? – Joshua

Répondre

0

Je pense que ce que vous cherchez est une architecture de notification push d'une certaine sorte. Je vous montrer à ces deux ressources:

Essentiellement le dispositif client établit une connexion duplex intégral avec un serveur de notification qui le maintient ouvert indéfiniment. Les serveurs d'applications s'enregistrent auprès du serveur de notification et lorsqu'ils ne souhaitent pas avertir un équipement client, ils envoient le message au serveur de notification qui utilise la connexion ouverte à l'équipement client pour les notifier. Habituellement, différentes applications utilisent le même serveur de notification pour des raisons d'efficacité. Pour récapituler, le périphérique client établit une connexion duplex avec le serveur de notification, le serveur d'applications envoie une notification pour le client au serveur de notification, le serveur de notification envoie la notification au client approprié.

+0

Donc, je dois ouvrir une socket et garder cette socket ouverte jusqu'à ce que l'utilisateur ferme la socket? – Joshua

+0

Oui, vous pouvez le faire de cette façon, mais je ne pense pas que ce soit la seule façon possible. Je vous suggère de trouver une implémentation open source d'un serveur de notifications push et de voir par vous-même comment ils le font. Cela vous donnerait beaucoup plus de contexte qu'une réponse courte dans SO. –

+0

Ok. Merci beaucoup. – Joshua