-
Notifications
You must be signed in to change notification settings - Fork 0
Server Protokoll
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!
- 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'
- Korrekt:
- 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'
- Korrekt:
- 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 beispielsweisePN:42
- Auch korrekt:
GP:XYZ
, Payload wird ignoriert.
- Korrekt:
- 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.
- 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'
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.