TsgcWebSocketServerMetody › 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 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

Ta przeciążona metoda wyszukuje połączenie, którego GUID pasuje do aGuid, i wysyła wiadomość tekstową do tego pojedynczego klienta. GUID to wartość udostępniana przez TsgcWSConnection.Guid, zazwyczaj przechwytywana w OnConnect i przechowywana przez aplikację. Gdy QueueOptions.Text jest ustawione na wartość inną niż qmNone, ramka jest kolejkowana i wysyłana z wątku połączenia zamiast wątku wywołującego (nieobsługiwane gdy IOHandlerOptions.IOHandlerType = iohIOCP). Należy użyć Broadcast, aby dotrzeć do wszystkich aktywnych klientów jednym wywołaniem.

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 do pojedynczego klienta binarny ładunek odczytany z dostarczonego strumienia. Strumień jest konsumowany od bieżącej pozycji, a serwer nie przejmuje jego własności, dlatego wywołujący musi utrzymywać go przy życiu do momentu zwrócenia WriteData (lub, przy kolejkowaniu, do zakończenia wysyłania). Gdy wartość QueueOptions.Binary 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). Należy użyć 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