TsgcWebSocketServer › 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 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)
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.
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 znaleziono połączenie o podanym GUID i strumień został przekazany do jego gniazda; False, gdy nie istnieje pasujące aktywne połączenie. (Boolean)
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.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.WriteData('guid', oStream);
finally
oStream.Free;
end;