Skip to content

Server Protokoll

SaschaB1 edited this page Jul 8, 2016 · 6 revisions

Der Server akzeptiert Kommandos, die per WebSocket gesendet und empfangen werden. Hierzu wird ein QWebSocket geöffnet, und mit sendTextMessage gesendet. Hierbei handelt es sich um reine Textkommandos, die einem bestimmten Format folgen. Hierbei wird spezifiziert, welche Funktion man aufrufen möchte, und es können Daten mit übergeben werden. Die ersten beiden Zeichen geben an, was getan werden soll, daraufhin folgt ein Doppelpunkt (:) und dann die restlichen Nutzdaten, die 'Payload'. Kommandos ohne Doppelpunkt werden nicht akzeptiert.

Bei falschen Kommandos oder Kommandos mit falscher Payload oder fehlenden Rechten erfolgt eine Fehlermeldung.

Kommandos sehen also wie folgt aus: CC:XXXXXXXXX, wobei prinzipiell beliebig viele X vorhanden sein können.

//Die Portnummer ist 1234!

Die Kommandos

Diesen Client als Master registrieren

  • Kommando: 'RM' - Register Master
  • Payload: Das gültige Master-Passwort, derzeit mpw12345
  • Mögliche Fehlermeldungen:
    • Das Master-Passwort ist falsch. Fehlermeldung: 'MASTERISSET'
    • Es gibt bereits einen Master. Multi-Master wird derzeit nicht unterstützt. Fehlermeldung: 'BADPW'
  • Meldung bei erfolgreicher Registrierung: 'ACK'
  • Beispiele
    • Korrekt: RM:mpw12345, Antwort 'ACK'
    • Falsch: RM:123, Antwort 'BADPW'

Die aktuelle Seite setzen

  • Kommando: 'SP' - Set Page
  • Payload: Eine Seitenzahl
  • Mögliche Fehlermeldungen:
    • Die Seitenzahl ließ sich nicht in einen int konvertieren: 'BADPAGENUM'
    • Der sendende WebSocket ist nicht der Master: 'NOTALLOWED'
  • Meldung bei Erfolg: Es erfolgt ein Broadcast an alle verbundenen Clients, auch den Master. Dieser enthält die empfangene Nachricht.
  • Beispiele
    • Korrekt: SP:42, Antwort / Broadcast an alle: SP:42
    • Inkorrekt: SP:X, Antwort: 'BADPAGENUM'

Die aktuelle Seite erfragen

  • Kommando: 'GP' - Get Page
  • Payload: Don't care
  • Mögliche Fehlermeldungen:
    • Wenn noch kein pdf Verfügbar ist bzw noch keine Seitenzahl gesetzt ist, wird der Defaultwert -1 gesendet.
  • Meldung bei Erfolg: PN:_x_, wobei x die aktuelle Seitenzahl bezeichnet.
  • Beispiele
    • Korrekt: GP, Antwort beispielsweise PN:42
    • Auch korrekt: GP:XYZ, Payload wird ignoriert.

Die Präsentation anfordern

  • Kommando: 'DL' - DownLoad
  • Payload: Don't care
  • Mögliche Fehlermeldungen:
    • Wenn noch kein pdf verfügbar ist, wird die Textnachricht 'NOFILE' gesendet.
  • Meldung bei Erfolg: Es wird eine BinaryMessage mit den Inhalten der pdf-Datei gesendet, die dann gespeichert und angezeigt werden kann.

Anfragen, ob ein Upload erlaubt ist

  • Kommando: 'UL' - UpLoad
  • Payload: Don't Care
  • Mögliche Fehlermeldungen:
    • Wenn der Sender der Nachricht nicht der Master ist: 'NOTALLOWED'
  • Meldung bei Erfolg (der Sender ist Master): 'ACK'

Die Präsentation uploaden

Dies ist kein Textkommando, sondern es erfolgt einfach ein Senden per BinaryMessage. Diese wird nur akzeptiert, wenn sie vom Master erfolgt. Der Sender empfängt hierauf ein 'ACK', außerdem erfolgt hierauf ein Broadcast mit 'PDFAVAILABLE'. Die pdfpage wird auf 1 gesetzt. Ist der Sender nicht der Master, wird 'NOTALLOWED' als Fehlermeldung ausgegeben.