WebSockets

Ich habe bisher noch nicht mit WebSockets gearbeitet, würde selbige aber für ein Spiel brauchen (Einer-gegen-einen Matches, kein hohes Datenaufkommen, also vergleichbar mit einem Schachserver).

Als Lib habe ich erst mal Java-Websocket (https://github.com/TooTallNate/Java-WebSocket) genommen, weil es SSL unterstützt und auch einen Client anbietet. Technisch alles kein Problem, ich hätte aber Fragen zur Architektur:

  • Wie erfolgt normalerweise die Anmeldung? Man kann wohl gleich beim Handshake eine Authentifizierung durchführen, aber das würde ich eher dafür nutzen zu schauen, dass der Call von “meinem” Client kommt, und dan als erstes einen Login-Call vom Client erwarten.
  • Wie skaliert das Ganze auf Serverseite? Reicht es, bei einem Websocket die eingehenden Calls asynchron abarbeiten zu lassen, oder sollte man mehrere WebSockets für verschiedene Aufgaben anbieten, oder sollte man sogar zusätzliche REST Endpoints für Aufgaben haben, die kein Server-Push erfordern?
  • Braucht man Keep-Alive-Calls, um Timeouts zu vermeiden? Oder ließe sich ein Reconnect realisieren?

Wie man sieht, bin ich bei dem Thema noch ziemlich nooby…

bei mir ists schon etwas her dass ich das letzte Mal Websockets genutzt hab.

  • Anmeldung ist eigentlich wie üblich du realisierst sie wie du es denkst :wink: Aber dein Weg klingt gut
  • ich denke am Besten ist es pro Client nur einen Websocket zu haben, weil sonst werden es auf Dauer ganz schön viele. Außerdem würde ich paralllel noch REST da lassen. Weil es Clients geben kann wo Websockets wenig Sinn machen, wie zb Mobile Clients (das gibt schöne Taschenwärmer :smiley: )
  • Würde ich einbauen, weil wie willst du zeitnah rausbekommen ob der Client noch da ist, außerdem kannst du so zur Not auch sagen “Hey deine Verbindung ist scheiße, das kommt zu verzögerungen”
1 Like