Différences entre les Websockets et l'interrogation longue pour le serveur de jeu au tour par tour

90

J'écris un serveur pour un jeu iOS. Le jeu est au tour par tour et le seul moment où le serveur a besoin de transmettre des informations au client est de notifier le mouvement de l'adversaire.

Je suis curieux de savoir si quelqu'un pourrait commenter les performances et la facilité de mise en œuvre des différences entre l'utilisation de websockets et la longue interrogation. De plus, si j'utilisais des websockets, devrais-je l'utiliser uniquement pour recevoir des informations et envoyer des requêtes POST pour tout le reste ou toutes les communications devraient-elles se faire via le websocket?

De plus, y a-t-il quelque chose à prendre en compte entre les websockets et les longs sondages si je souhaite également créer un client Web?

acide
la source
6
Vous pouvez également utiliser les notifications push pour informer le client de nouvelles données. Je pense être plus efficace (en termes de batterie) que vos deux solutions envisagées.
pteofil
1
comment cela fonctionnerait-il si l'utilisateur était toujours dans l'application?
acide
4
Vous êtes également averti dans l'application lorsque vous recevez une notification push.
pteofil

Réponses:

177

Qu'est-ce que le sondage long?

entrez la description de l'image ici Une variante de la technique d'interrogation traditionnelle et permet l'émulation d'une information push d'un serveur vers un client. Avec une longue interrogation, le client demande des informations au serveur de la même manière qu'une interrogation normale.

  • Si le serveur ne dispose d'aucune information disponible pour le client, au lieu d'envoyer une réponse vide, le serveur conserve la demande et attend que certaines informations soient disponibles.
  • Une fois que les informations sont disponibles (ou après un délai d'attente approprié), une réponse complète est envoyée au client. Le client demandera normalement alors immédiatement des informations au serveur, de sorte que le serveur aura presque toujours une demande d'attente disponible qu'il peut utiliser pour fournir des données en réponse à un événement.

    Dans un contexte web / AJAX, l'interrogation longue est également connue sous le nom de programmation Comet.

Qu'en est-il des Websockets?

entrez la description de l'image ici Les WebSockets fournissent une connexion permanente entre un client et un serveur que les deux parties peuvent utiliser pour commencer à envoyer des données à tout moment.

  • Le client établit une connexion WebSocket via un processus connu sous le nom de négociation WebSocket. Ce processus commence par l'envoi par le client d'une requête HTTP régulière au serveur.
  • Un en-tête de mise à niveau est inclus dans cette demande qui informe le serveur que le client souhaite établir une connexion WebSocket.

Conclusion :

S'il y a un besoin de communication en temps réel, vous pouvez très bien opter pour les websockets.

Mais dans un sondage long:

Une connexion est maintenue ouverte entre le client Web et le serveur Web afin que, lorsque le serveur dispose de nouvelles informations, il puisse les transmettre au client. Cette demande est alors terminée. Une nouvelle demande est alors faite entre le client et le serveur puis attend une autre mise à jour du serveur. La même connexion TCP est généralement ouverte de manière persistante à travers plusieurs requêtes en raison des keep-alives HTTP / 1.1.

Références et autres considérations:

PubNub Long Polling vs Sockets - Autonomie de la batterie mobile

Que sont l'interrogation longue, les Websockets, les événements envoyés par le serveur (SSE) et la comète?

longue interrogation en objectif-C

Présentation de Websocket

Interrogation longue de Websocket Vs

Utilisation de Websockets dans les applications

Application Websocket

Interrogation longue durée de la technologie Push

Tharif
la source