TsgcWebSocketLoadBalancerServerMethods › WriteData

WriteData Method

Invia un messaggio WebSocket a un singolo client identificato dal suo GUID di connessione, instradando il frame attraverso il server di backup che gestisce la sessione.

Overload

Overload 1

Sintassi

function WriteData(const aGuid, aMessage: string): Boolean;

Parametri

NomeTipoDescrizione
aGuidconst stringIdentificatore della connessione target assegnato dal server di backup quando l'handshake del client è stato completato.
aMessageconst stringPayload di testo da consegnare a quel client come frame di testo WebSocket.

Valore restituito

True quando una connessione con il GUID specificato è stata individuata su un server di backup registrato e il frame è stato inoltrato al suo socket; False quando non esiste alcuna connessione attiva corrispondente nel cluster. (Boolean)

Note

Questo overload chiede al load balancer di individuare il server di backup proprietario della connessione WebSocket il cui GUID corrisponde a aGuid e inoltra il messaggio di testo a quel singolo client. Il GUID è il valore esposto da TsgcWSConnection.Guid, tipicamente acquisito in OnConnect e memorizzato dall'applicazione. Solo le sessioni WebSocket aggiornate sono ammissibili; i GUID appartenenti a pure richieste HTTP vengono rifiutati e viene restituito False. Quando QueueOptions.Text è impostato su un valore diverso da qmNone, il frame viene accodato e distribuito dal thread di connessione invece che dal thread del chiamante (non supportato quando IOHandlerOptions.IOHandlerType = iohIOCP). Utilizzare Broadcast per raggiungere ogni client attivo nel cluster con un'unica chiamata.

Esempio


oServer.WriteData('guid', 'My First sgcWebSockets Message!.');

Sovraccarico 2

Sintassi

function WriteData(const aGuid: String; aStream: TStream; aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone) : Boolean;

Parametri

NomeTipoDescrizione
aGuidconst StringIdentificatore della connessione target assegnato dal server di backup quando l'handshake del client è stato completato.
aStreamTStreamStream sorgente il cui contenuto viene inviato al client come frame binario WebSocket. Il chiamante rimane il proprietario dello stream.
aSizeIntegerDimensione opzionale del frammento in byte; quando è maggiore di zero, lo stream viene suddiviso in più frammenti di questa dimensione. Utilizzare 0 (il valore predefinito) per inviare l'intero stream come un singolo frame.
aStreamingconst TwsStreamingModalità di streaming per la trasmissione frammentata (stmNone, stmStart, stmContinue, stmFinish). Il valore predefinito è stmNone, che invia un messaggio completo autonomo.

Valore restituito

True quando una connessione con il GUID specificato è stata individuata su un server di backup registrato e lo stream è stato inoltrato al suo socket; False quando non esiste alcuna connessione attiva corrispondente nel cluster. (Boolean)

Note

Questo overload ha come destinatario un singolo client WebSocket con un payload binario letto dallo stream fornito, instradando i byte attraverso il bilanciatore di carico verso il server di backup proprietario della sessione. Lo stream viene consumato dalla sua posizione corrente e il bilanciatore di carico non ne assume la proprietà, quindi il chiamante deve mantenerlo attivo finché WriteData non ritorna (oppure, in caso di accodamento, finché l'invio non è completato). Quando QueueOptions.Binary è impostato su un valore diverso da qmNone il frame viene accodato e inviato dal thread della connessione anziché dal thread del chiamante (non supportato quando IOHandlerOptions.IOHandlerType = iohIOCP). Utilizzi aSize insieme a aStreaming quando invia payload molto grandi che devono essere frammentati su più frame WebSocket.

Esempio


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

Torna ai Metodi