TsgcWebSocketHTTPServer › Metody › WriteData
Wysyła wiadomość WebSocket do pojedynczego klienta identyfikowanego przez jego 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)
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.
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 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.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.WriteData('guid', oStream);
finally
oStream.Free;
end;