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…