0

dort. Ich mache gerade ein Python-Net-Chat-Programm. Derzeit funktioniert es nur in einem lokalen Netzwerk und kann keine Nachrichten an Clients senden, die außerhalb des Netzwerks angeschlossen sind, da die Firewall des Routers die Nachrichten blockiert, die an sie gesendet werden.Wie "umgehen" Messaging-Anwendungen Firewalls?

Meine Frage ist also: Wie "umgehen" Messaging-Anwendungen Firewalls, um Nachrichten an Clients zu senden? Verwenden sie etwas wie "holen" die Informationen vom Server und es tunnelt die Nachricht zurück zu ihnen? Aber selbst das würde große Mengen an Batterie verbrauchen, wenn es jede Sekunde holt. Und jede Minute abzuholen ist einfach unpraktisch. Ich dachte, dass sie eher ein "Push" -Protokoll verwenden, ähnlich wie mein IMAP-Server meine E-Mails auf mein Handy "schiebt". Aber wie gehen diese Verbindungen durch die Firewall?

+0

verbinden sie ihre Sockets auf Port 443, der normalerweise nicht blockiert ist –

+0

Aber wie weiß der Router, an welchen Client die Nachricht gesendet werden soll? – Joshua

Antwort

0

Ich denke, was Sie suchen, ist eine Push-Notification-Architektur einer Art. Ich möchte Sie auf diese beiden Ressourcen verweisen:

Im Wesentlichen das Client-Gerät setzt eine Vollduplex-Verbindung mit einem Benachrichtigungsserver auf, die es auf unbestimmte Zeit offen hält. App-Server registrieren sich beim Benachrichtigungsserver. Wenn sie ein Clientgerät nicht benachrichtigen, senden sie die Nachricht an den Benachrichtigungsserver, der die offene Verbindung zum Clientgerät verwendet, um sie zu benachrichtigen. Normalerweise verwenden verschiedene Apps aus Effizienzgründen den gleichen Benachrichtigungsserver.

Zur Erinnerung, Client-Gerät stellt eine Duplexverbindung mit dem Benachrichtigungsserver her, App Server sendet Benachrichtigung für Client an Benachrichtigungsserver, Benachrichtigungsserver sendet die Benachrichtigung an den entsprechenden Client.

+0

Also, ich muss einen Sockel öffnen und diesen Sockel offen halten, bis der Benutzer den Sockel schließt? – Joshua

+0

Ja, du könntest es so machen, aber ich denke nicht, dass dies der einzig mögliche Weg ist. Ich würde vorschlagen, dass Sie eine Open-Source-Implementierung eines Push-Benachrichtigungsservers finden und selbst sehen, wie sie es macht. Dies würde Ihnen viel mehr Kontext als eine kurze Antwort in SO geben. –

+0

Okay. Vielen Dank. – Joshua

Verwandte Themen