TsgcWebSocketHTTPServer › Métodos › WriteData
Envía un mensaje WebSocket a un único cliente identificado por su GUID de conexió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 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 ha localizado una conexión con el GUID indicado y la trama se ha entregado a su socket; False cuando no existe ninguna conexión activa coincidente. (Boolean)
Esta sobrecarga busca la conexión WebSocket cuyo GUID coincide con aGuid y envía el mensaje de texto a ese único cliente. El GUID es el valor expuesto por TsgcWSConnection.Guid, capturado normalmente en OnConnect y almacenado por la aplicación. Solo son elegibles las sesiones WebSocket completadas; los GUIDs que pertenecen a solicitudes HTTP puras son rechazados y se devuelve False. Cuando QueueOptions.Text se establece en un valor distinto de qmNone, la trama se encola y se envía desde el hilo de la conexión en lugar del hilo del llamador (no admitido cuando IOHandlerOptions.IOHandlerType = iohIOCP). Utilice Broadcast para llegar a todos los clientes activos en 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 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 si se localizó una conexión con el GUID indicado y el flujo se entregó a su socket; False si no existe ninguna conexión activa coincidente. (Boolean)
Esta sobrecarga apunta a un único cliente WebSocket con una carga útil binaria leída desde el flujo proporcionado. El flujo se consume desde su posición actual y el servidor no asume su propiedad, por lo que el llamador debe mantenerlo activo hasta que WriteData retorne (o, cuando se usa cola, hasta que el envío se complete). Cuando QueueOptions.Binary se establece en un valor distinto de qmNone, el marco se encola y se despacha desde el hilo de conexión en lugar del hilo del llamador (no compatible cuando IOHandlerOptions.IOHandlerType = iohIOCP). Use aSize junto con aStreaming al enviar cargas útiles muy grandes que deben fragmentarse en múltiples marcos WebSocket.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.WriteData('guid', oStream);
finally
oStream.Free;
end;