TsgcWebSocketHTTPServerMetody › WriteData

WriteData Metoda

Wysyła wiadomość WebSocket do pojedynczego klienta identyfikowanego przez jego 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 o podanym identyfikatorze GUID zostało odnalezione i ramka została przekazana do jego gniazda; False, gdy nie istnieje pasujące aktywne połączenie. (Boolean)

Uwagi

To przeciążenie wyszukuje połączenie WebSocket, którego GUID pasuje do aGuid, i wysyła wiadomość tekstową wyłącznie do tego klienta. GUID to wartość udostępniana przez TsgcWSConnection.Guid, zazwyczaj przechwytywana w zdarzeniu OnConnect i przechowywana przez aplikację. Kwalifikują się wyłącznie sesje WebSocket po zakończonym uzgadnianiu; identyfikatory GUID należące do zwykłych żądań HTTP są odrzucane i zwracane jest False. Gdy właściwość QueueOptions.Text jest ustawiona na wartość inną niż qmNone, ramka jest kolejkowana i wysyłana z wątku połączenia, a nie wątku wywołującego (nieobsługiwane, gdy IOHandlerOptions.IOHandlerType = iohIOCP). Do obsługi 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 znaleziono połączenie o podanym GUID i strumień został przekazany do jego gniazda; False, gdy nie istnieje pasujące aktywne połączenie. (Boolean)

Uwagi

To przeciążenie kieruje dane do pojedynczego klienta WebSocket z binarnym ładunkiem odczytanym z podanego strumienia. Strumień jest odczytywany od bieżącej pozycji, a serwer nie przejmuje jego własności, więc obiekt wywołujący musi utrzymywać strumień aktywny do momentu powrotu WriteData (lub, w przypadku kolejkowania, do 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, a nie z wątku wywołującego (nieobsługiwane gdy IOHandlerOptions.IOHandlerType = iohIOCP). Należy używać parametru aSize razem z aStreaming przy wysyłaniu bardzo dużych ładunków, które powinny być podzielone na wiele ramek WebSocket.

Przykład


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

Powrót do metod