Lade...
 

CX_WIDGET::PushSocket

CX_WIDGET::PushSocket

189117

Beschreibung:

Falls das Widget, auf welchem diese Methode aufgerufen wird, ein Web-Widget ist und mit einem MorphIT-Client verbunden ist, dann kann mit PushSocket eine beliebige Nachricht an das entsprechende Web-Widget im Browser geschickt werden.

Falls das Widget im Browser noch nicht geöffent wurde, dann geht die Nachricht ohne Warnung verloren. Deshalb sollte sichergestellt werden, dass das Web-Widget auch wirklich existiert und bereit ist, bevor eine Nachricht per PushSocket an das Widget geschickt wird. Das kann am einfachsten dadurch sichergestellt werden, dass PushSocket nur innerhalb von _SOCKET -Messages verwendet wird, als Antwort auf eine Anfrage vom Web-Widget. (Wie im Codebeispiel auch gezeigt wird).

Der Nachrichten-Typ, der bei PushSocket übergeben wird dient dazu, eine Kategorisierung der Nachrichten zu erreichen. Das Web-Widget erhält die übergebenen Daten und den Typ. Sendet das Web-Widget eine Nachricht an das ClassiX-System, dann wird diese Nachricht in eine Message umgewandelt, indem der typ in Großbuchstaben umgewandelt wird und ein _SOCKET angehängt wird. Aus einem fetch_data wird also FETCH_DATA_SOCKET. Anschließend werden die Daten auf den Stack gelegt. Dabei werden die Daten vom JSON-Format in einen kompatiblen ClassiX-Typen umgewandelt.

Als zu übermittelnde Daten sind alle Datentypen erlaubt, die auch von CX_JSON_PARSER::WriteToString akzeptiert werden (Also alle Typen, die sich einfach in einen JSON-Wert übersetzten lassen).

PushSocket ist ein asynchroner Aufruf, der sofort zurückkehrt. Das Senden der Nachricht geschieht verzögert und es gibt keine Garantie, wann genau das Web-Widget die Nachricht erhält. Es ist lediglich garantiert, dass bei mehreren PushSocket aufrufen das Web-Widget die Nachrichten in der gleichen Reihenfolge erhält.

Code-Beispiel:
Web(webWidget, APP("QM/widget.html"), 10, 25, 700, 200) [ FETCH_DATA_SOCKET: Drop //Ignore passed data from web widget Var(json) CreateTransObject(CX_JSON_OBJECT) -> json "value" "key" json Call(PutTyped) json "response" Widget Call(PushSocket) //Push data to socket as message of type "response" ]
Stack
Stack Positionn Objekttyp Kurzbeschreibung
Stack(In) Top CX_WIDGET Ein Widget
  Top-1 STRING Der Message-Typ
  Top-2 JSON-Typ Die zu übermittelnden Daten
Stack(Out) Top    
Funktionsaufruf: Call(PushSocket)