Unterschiede zwischen Websockets und langen Abfragen für rundenbasierte Spieleserver


87

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?


6
Sie können auch Push-Benachrichtigungen verwenden, um den Client über neue Daten zu informieren. Ich glaube, dass es effizienter ist (was die Batterie betrifft), als Ihre beiden Lösungen in Betracht gezogen haben.
Pteofil

1
Wie würde das funktionieren, wenn der Benutzer noch in der App wäre?
sauer

4
Sie werden in der App benachrichtigt, wenn Sie auch eine Push-Benachrichtigung erhalten.
Pteofil

Antworten:


172

Was ist Long Polling?

Geben Sie hier die Bildbeschreibung ein 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.

  • Wenn auf dem Server keine Informationen für den Client verfügbar sind, hält der Server die Anforderung, anstatt eine leere Antwort zu senden, und wartet darauf, dass einige Informationen verfügbar sind.
  • 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.

Was ist mit Websockets?

Geben Sie hier die Bildbeschreibung ein WebSockets bieten eine dauerhafte Verbindung zwischen einem Client und einem Server, über die beide Parteien jederzeit mit dem Senden von Daten beginnen können.

  • Der Client stellt eine WebSocket-Verbindung über einen Prozess her, der als WebSocket-Handshake bezeichnet wird. Dieser Prozess beginnt damit, dass der Client eine reguläre HTTP-Anforderung an den Server sendet.
  • In dieser Anforderung ist ein Upgrade-Header enthalten, der den Server darüber informiert, dass der Client eine WebSocket-Verbindung herstellen möchte.

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.