TsgcWebSocketLoadBalancerServer › Métodos › WriteData
Envía un mensaje WebSocket a un único cliente identificado por su GUID de conexión, enrutando el frame a través del servidor de respaldo que posee la sesión.
function WriteData(const aGuid, aMessage: string): Boolean;
| Nombre | Tipo | Descripción |
|---|---|---|
aGuid | const string | Identificador de la conexión de destino asignado por el servidor de respaldo cuando se completó el handshake del cliente. |
aMessage | const string | Payload de texto que se enviará a ese cliente como una trama de texto WebSocket. |
True cuando se localizó una conexión con el GUID dado en un servidor de respaldo registrado y el frame fue reenviado a su socket; False cuando no existe ninguna conexión activa coincidente en el clúster. (Boolean)
Esta sobrecarga pide al balanceador de carga que localice el servidor de respaldo que posee la conexión WebSocket cuyo GUID coincide con aGuid y reenvía el mensaje de texto a ese único cliente. El GUID es el valor expuesto por TsgcWSConnection.Guid, normalmente capturado en OnConnect y almacenado por la aplicación. Solo las sesiones WebSocket actualizadas son elegibles; los GUIDs pertenecientes a solicitudes HTTP puras son rechazados y se devuelve False. Cuando QueueOptions.Text se establece en un valor distinto de qmNone, el fotograma se encola y se envía desde el hilo de conexión en lugar del hilo del llamador (no compatible cuando IOHandlerOptions.IOHandlerType = iohIOCP). Use Broadcast para llegar a todos los clientes activos en el clúster con una sola llamada.
oServer.WriteData('guid', 'My First sgcWebSockets Message!.');
function WriteData(const aGuid: String; aStream: TStream; aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone) : Boolean;
| Nombre | Tipo | Descripción |
|---|---|---|
aGuid | const String | Identificador de la conexión de destino asignado por el servidor de respaldo cuando se completó el handshake del cliente. |
aStream | TStream | Flujo de origen cuyo contenido se envía al cliente como un frame binario WebSocket. El llamador sigue siendo el propietario del flujo. |
aSize | Integer | Tamaño de fragmento opcional en bytes; cuando es mayor que cero, el flujo se divide en múltiples fragmentos de este tamaño. Use 0 (el valor predeterminado) para enviar todo el flujo como un único frame. |
aStreaming | const TwsStreaming | Modo de transmisión para la transmisión fragmentada (stmNone, stmStart, stmContinue, stmFinish). El valor predeterminado es stmNone, que envía un mensaje completo independiente. |
True cuando se ha localizado una conexión con el GUID dado en un servidor de respaldo registrado y el flujo ha sido reenviado a su socket; False cuando no existe ninguna conexión activa coincidente en ningún lugar del clúster. (Boolean)
Esta sobrecarga se dirige a un único cliente WebSocket con un payload binario leído desde el stream proporcionado, enrutando los bytes a través del balanceador de carga hasta el servidor de respaldo que gestiona la sesión. El stream se consume desde su posición actual y el balanceador de carga no asume su propiedad, por lo que el llamante debe mantenerlo activo hasta que WriteData retorne (o, en caso de encolamiento, hasta que el envío se complete). Cuando QueueOptions.Binary está establecido en un valor distinto de qmNone, el frame se encola y se despacha desde el hilo de conexión en lugar del hilo del llamante (no compatible cuando IOHandlerOptions.IOHandlerType = iohIOCP). Use aSize junto con aStreaming cuando envíe payloads muy grandes que deban fragmentarse en múltiples frames WebSocket.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.WriteData('guid', oStream);
finally
oStream.Free;
end;