Ich schreibe einen Server für ein iOS-Spiel. Das Spiel ist rundenbasiert und der Server muss nur dann Informationen an den Client senden, wenn er über den Zug des Gegners informiert wird.
Ich bin gespannt, ob jemand die Leistung und die einfachen Implementierungsunterschiede zwischen der Verwendung von Websockets und langen Abfragen kommentieren kann. Wenn ich Websockets verwendet habe, sollte ich sie dann nur zum Empfangen von Informationen und zum Senden von POST-Anfragen für alles andere verwenden oder sollte die gesamte Kommunikation über das Websocket erfolgen?
Gibt es außerdem etwas zu beachten zwischen Websockets und langen Abfragen, wenn ich daran interessiert bin, auch einen Webclient zu erstellen?
Antworten:
Eine Variation der traditionellen Abfragetechnik und ermöglicht die Emulation eines Informations-Push von einem Server zu einem Client. Bei langen Abfragen fordert der Client Informationen vom Server an, ähnlich wie bei einer normalen Abfrage.
Sobald die Informationen verfügbar sind (oder nach einer geeigneten Zeitüberschreitung), wird eine vollständige Antwort an den Client gesendet. Der Client fordert dann normalerweise sofort Informationen vom Server erneut an, sodass dem Server fast immer eine Warteanforderung zur Verfügung steht, mit der er Daten als Antwort auf ein Ereignis übermitteln kann.
In einem Web / AJAX-Kontext wird lange Abfrage auch als Comet-Programmierung bezeichnet.
WebSockets bieten eine dauerhafte Verbindung zwischen einem Client und einem Server, über die beide Parteien jederzeit mit dem Senden von Daten beginnen können.
Fazit :
Wenn Echtzeitkommunikation erforderlich ist, können Sie sich sehr gut für Websockets entscheiden.
Aber in Long Polling:
Eine Verbindung zwischen dem Webclient und dem Webserver wird offen gehalten, damit der Server, wenn er über neue Informationen verfügt, diese an den Client weiterleiten kann. Diese Anfrage ist dann beendet. Anschließend wird eine neue Anforderung zwischen dem Client und dem Server gestellt und auf ein weiteres Update vom Server gewartet. Dieselbe TCP-Verbindung ist aufgrund von HTTP / 1.1-Keep-Alives im Allgemeinen während mehrerer Anforderungen dauerhaft geöffnet.
Referenzen und andere Überlegungen:
PubNub Long Polling vs Sockets - mobile Akkulaufzeit
Was sind Long Polling, Websockets, Server-Sent Events (SSE) und Comet?
lange Umfrage in Ziel-C
Websocket Einführung
Websocket Vs Long Polling
Verwenden von Websockets in Apps
Websocket-Anwendung
PushTechnology-Long Polling
quelle