TsgcWebSocketServer_HTTPAPIMetody › WriteData

WriteData Metoda

Wysyła wiadomość do pojedynczego klienta identyfikowanego przez jego identyfikator GUID połączenia.

Przeciążenia

Przeciążenie 1

Składnia

function WriteData(const aGUID, aMessage: string): Boolean;

Parametry

NazwaTypOpis
aGUIDconst stringIdentyfikator docelowego połączenia przypisany przez serwer po zakończeniu uzgadniania przez klienta.
aMessageconst stringŁadunek tekstowy dostarczany do tego klienta jako ramka tekstowa WebSocket.

Wartość zwracana

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)

Uwagi

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.

Przykład


oServer.WriteData('guid', 'My First sgcWebSockets Message!.');

Przeciążenie 2

Składnia

function WriteData(const aGUID: String; aStream: TStream; aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone) : Boolean;

Parametry

NazwaTypOpis
aGUIDconst StringIdentyfikator docelowego połączenia przypisany przez serwer po zakończeniu uzgadniania przez klienta.
aStreamTStreamStrumień źródłowy, którego zawartość jest wysyłana do klienta jako binarny ramka WebSocket. Właścicielem strumienia pozostaje wywołujący.
aSizeIntegerOpcjonalny 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.
aStreamingconst TwsStreamingTryb strumieniowania dla pofragmentowanej transmisji (stmNone, stmStart, stmContinue, stmFinish). Domyślnie stmNone, co wysyła kompletną, samodzielną wiadomość.

Wartość zwracana

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)

Uwagi

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.

Przykład


oStream := TMemoryStream.Create;
try
  oStream.LoadFromFile('payload.bin');
  oServer.WriteData('guid', oStream);
finally
  oStream.Free;
end;

Powrót do metod