Entscheidung, ob einfache HTTP-Anfragen oder WebSockets verwendet werden sollen

8

Wir implementieren einen Service, der von vielen Nutzern gleichzeitig genutzt wird. In Spitzen können wir Zehntausende von Menschen online haben.

Ein kritischer Teil unseres Dienstes muss neu implementiert werden, und wir versuchen, über neue Wege nachzudenken. Im Moment senden wir einfache und sehr kurze / kleine AJAX-HTTP-Anfragen basierend auf Benutzerinteraktion:

  • Ping: Ich bin immer noch aktiv
  • Aktivität: Ich habe dies getan und schreibe es in die Datenbank
  • Abschluss: Ich habe meine Aktivitäten beendet, also meine Anfragen schließen

Zur gleichen Zeit, in einigen Fällen (1 in 10) haben wir EventSource geöffnet, von dem wir einige Änderungen auf dem Server gelesen haben.

Die Frage ist, ob dieses Modell gut genug ist oder ob es besser ist, einen WebSocket zu öffnen und alles über WebSockets zu übergeben.

  • Vorteil - Für jeden Benutzer würden wir nur eine Verbindung beibehalten, anstatt mehrere Anfragen zu senden.
  • Nachteil - wenn viele Leute online sind, würden wir Tausende von Verbindungen aktiv halten

Was sollte die Entscheidung für die richtige Implementierung sein?

Es wurde festgestellt, dass diese Frage das gleiche beantwortet: WebSockets-Protokoll vs HTTP - aber ich Fragen Sie nach einem bestimmten Anwendungsfall. Die damit verbundene Frage wird eher allgemein gestellt.

    
Vojtěch 15.03.2017, 12:01
quelle

1 Antwort

2
  
  • Nachteil - wenn viele Leute online sind, würden wir Tausende von Verbindungen aktiv halten
  •   

Sie können Ihren Dienst implementieren, um nach einem Timeout die Verbindung zu einem leeren Websocket zu schließen. Das ist wahrscheinlich die gleiche Art und Weise, wie EventSource für Sie arbeitet, also halten Sie nicht zu viele aktive Verbindungen. (Ähnliche Leistungsmerkmale.)

(Wenn Sie jedoch auf die automatische Wiederverbindung von EventSource durch den Browser angewiesen sind, bedeutet das Wechseln zu WebSocket, dass Sie mehr Code für die Logik der Wiederverbindung schreiben müssen.)

Normalerweise sollte WebSocket weniger Netzwerkverkehr verursachen. Wie groß der Unterschied ist, hängt davon ab, wie Ihr aktueller Service implementiert wird. Wenn Sie Ihre Logik bereits optimiert haben und mit AJAX und EventSource jede Menge Leistung verdrängen, kann die Verwendung von WebSocket eine marginale Verbesserung darstellen.

    
cshu 16.03.2017, 14:34
quelle

Tags und Links