2017-02-21 10 views
1

Ich weiß schon über die Web-Sockets, und sie sind großartig, das Problem mit ihnen ist, dass sie die Verbindung offen halten müssen, um kommunizieren zu können.Anfragen vom Server zum Client

Ich habe ein kleines System, wo der Server von Zeit zu Zeit den Status aktualisieren und die Clients darüber informieren muss, und die Verbindung von jedem Client offen zu halten ist nicht so optimal. Gleichzeitig ist es sehr wichtig, dass das Update auf der Client-Seite gerade rechtzeitig erfolgt.

Also meine Frage ist, wenn der Server eine eindeutige Adresse hat der Client eine öffentliche temporäre Adresse, wo der Server Anfrage senden kann? Wenn der Client eine Verbindung mit dem Server herstellt, wird er seine eindeutige Adresse bereitstellen und der Server wird ihn zwischenspeichern. Wenn es eine Aktualisierung gibt, sendet der Server die Anfrage an diese Adresse?

Ich verstehe, dass es viele Probleme wie die Adresse wird sich ständig ändern, aber das ist schon andere Frage.

Antwort

1

Wenn der Client keine dedizierte IP-Adresse hat, ist er aus dem WAN nicht verfügbar, es sei denn, er hat eine offene Verbindung mit einem Knoten in ihm.

Wenn ein Client vom lokalen Netzwerk eine Anfrage an einen Server sendet, merkt sich der (Client-) Router die lokale IP-Adresse und den Port des Clients und übersetzt sie mit dem NAT-Protokoll in einen der freien Ports des Routers und sendet die Daten dann weiter. Adresse des Absenders 'im IP-Protokoll-Header und' Absender-Port 'im TCP-Header. Wenn der Server die Antwort des Routers erhält, verwendet er die NAT-Tabelle aus seinem Speicher, um Adressen zurück zu übersetzen und Daten an den Client zu liefern. Adressen werden normalerweise in der NAT-Tabelle gespeichert, während die Verbindung zwischen Server und Client offen ist. Wenn also keine Verbindungen zwischen dem Server und dem lokalen Netzwerk-Client geöffnet sind, kann der Server keine Verbindung mit dem Client herstellen, da der Server nicht weiß, wie er es erreichen soll.

Sie sagen, Sie haben ein kleines System. Warum denken Sie dann, dass Sie nicht genügend freie Ports auf Ihrem Server haben werden, um mit Websockets zu arbeiten? Wenn Sie nur Updates vom Server erhalten möchten (nicht um Daten über eine persistent geöffnete Verbindung zu senden und zu erhalten), finden Sie wahrscheinlich eine längere Abfrage oder SSE besser geeignet. Es ist definitiv einfacher zu implementieren als Websockets.

Verwandte Themen