TsgcWebSocketLoadBalancerServer › Metody › WriteData
Wysyła wiadomość WebSocket do pojedynczego klienta identyfikowanego przez jego GUID połączenia, kierując ramkę przez serwer zapasowy, który jest właścicielem sesji.
function WriteData(const aGuid, aMessage: string): Boolean;
| Nazwa | Typ | Opis |
|---|---|---|
aGuid | const string | Identyfikator docelowego połączenia przypisany przez serwer kopii zapasowej po zakończeniu uzgadniania klienta. |
aMessage | const string | Ładunek tekstowy dostarczany do tego klienta jako ramka tekstowa WebSocket. |
True gdy połączenie z danym identyfikatorem GUID zostało znalezione na zarejestrowanym serwerze zapasowym i ramka została do niego przekazana; False gdy nigdzie w klastrze nie istnieje pasujące aktywne połączenie. (Boolean)
To przeciążenie prosi moduł równoważenia obciążenia o zlokalizowanie serwera zapasowego będącego właścicielem połączenia WebSocket, którego GUID odpowiada aGuid, i przekazuje wiadomość tekstową do tego jednego klienta. GUID to wartość udostępniana przez TsgcWSConnection.Guid, zazwyczaj przechwytywana w OnConnect i przechowywana przez aplikację. Kwalifikują się tylko zaktualizowane sesje WebSocket; identyfikatory GUID należące do czystych żądań HTTP są odrzucane i zwracane jest False. Gdy QueueOptions.Text jest ustawiony 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). Użyj Broadcast, aby jednym wywołaniem dotrzeć do każdego aktywnego klienta w klastrze.
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 kopii zapasowej po zakończeniu uzgadniania 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 połączenie o podanym identyfikatorze GUID zostało odnalezione na zarejestrowanym serwerze zapasowym i strumień został przekazany do jego gniazda; False gdy w żadnym miejscu klastra nie istnieje pasujące aktywne połączenie. (Boolean)
To przeciążenie kieruje do pojedynczego klienta WebSocket binarny ładunek odczytany z podanego strumienia, przekierowując bajty przez load balancer do serwera zapasowego będącego właścicielem sesji. Strumień jest pobierany od bieżącej pozycji, a load balancer nie przejmuje jego własności, więc wywołujący musi utrzymywać strumień przy życiu do momentu powrotu WriteData (lub, przy kolejkowaniu, 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 zamiast wątku wywołującego (nieobsługiwane gdy IOHandlerOptions.IOHandlerType = iohIOCP). Parametru aSize należy używać razem z aStreaming przy wysyłaniu bardzo dużych ładunków, które powinny być fragmentowane na wiele ramek WebSocket.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.WriteData('guid', oStream);
finally
oStream.Free;
end;