TsgcWebSocketServer_HTTPAPI › Metody › WriteData
Wysyła wiadomość do pojedynczego klienta identyfikowanego przez jego identyfikator GUID połączenia.
function WriteData(const aGUID, aMessage: string): Boolean;
| Nazwa | Typ | Opis |
|---|---|---|
aGUID | const string | Identyfikator docelowego połączenia przypisany przez serwer po zakończeniu uzgadniania przez klienta. |
aMessage | const string | Ładunek tekstowy dostarczany do tego klienta jako ramka tekstowa WebSocket. |
True gdy połączenie z podanym identyfikatorem GUID zostało zlokalizowane i ramka została przekazana do jego gniazda HTTP.sys; False gdy nie istnieje pasujące aktywne połączenie. (Boolean)
To przeciążenie wyszukuje połączenie, którego identyfikator GUID odpowiada wartości aGUID, i wysyła wiadomość tekstową do tego pojedynczego klienta. Identyfikator GUID jest wartością udostępnianą przez TsgcWSConnection.Guid, zazwyczaj przechwytywaną w zdarzeniu OnConnect i przechowywaną przez aplikację. Gdy właściwość QueueOptions.Text jest ustawiona na wartość inną niż qmNone, ramka jest umieszczana w kolejce i wysyłana z wątku połączenia zamiast wątku wywołującego, co zapobiega blokadom, gdy kilka wątków wysyła do tego samego klienta. Gdy właściwość Asynchronous jest włączona, metoda powraca przed zakończeniem zapisu ramki przez HTTP.sys; zakończenie jest sygnalizowane przez zdarzenie OnAsynchronous. Aby dotrzeć do wszystkich aktywnych klientów jednym wywołaniem, należy użyć metody Broadcast.
oServer.WriteData('guid', 'My First sgcWebSockets Message!.');
function WriteData(const aGUID: String; aStream: TStream; aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone) : Boolean;
| Nazwa | Typ | Opis |
|---|---|---|
aGUID | const String | Identyfikator docelowego połączenia przypisany przez serwer po zakończeniu uzgadniania przez klienta. |
aStream | TStream | Strumień źródłowy, którego zawartość jest wysyłana do klienta jako binarny ramka WebSocket. Właścicielem strumienia pozostaje wywołujący. |
aSize | Integer | Opcjonalny rozmiar fragmentu w bajtach; gdy jest większy od zera, strumień jest dzielony na wiele fragmentów o tym rozmiarze. Wartość 0 (domyślna) powoduje wysłanie całego strumienia jako pojedynczej ramki. |
aStreaming | const TwsStreaming | Tryb strumieniowania dla pofragmentowanej transmisji (stmNone, stmStart, stmContinue, stmFinish). Domyślnie stmNone, co wysyła kompletną, samodzielną wiadomość. |
True, gdy połączenie z podanym identyfikatorem GUID zostało odnalezione i strumień został przekazany do jego gniazda HTTP.sys; False, gdy nie istnieje żadne pasujące aktywne połączenie. (Boolean)
To przeciążenie kieruje dane binarne odczytane z dostarczonego strumienia do pojedynczego klienta. Strumień jest konsumowany od bieżącej pozycji, a serwer nie przejmuje jego własności, dlatego kod wywołujący musi utrzymywać strumień aktywny do momentu powrotu WriteData (lub, w przypadku kolejkowania lub włączonego trybu Asynchronous, do czasu faktycznego zakończenia wysyłania). Gdy właściwość QueueOptions.Binary jest ustawiona na wartość inną niż qmNone, ramka jest kolejkowana i wysyłana z wątku połączenia zamiast wątku wywołującego. Parametrów aSize i aStreaming należy używać przy wysyłaniu bardzo dużych ładunków, które powinny być podzielone na wiele ramek WebSocket zamiast buforowane jako jedna nadmiernie duża wiadomość w HTTP.sys.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.WriteData('guid', oStream);
finally
oStream.Free;
end;