TsgcWebSocketLoadBalancerServer › Métodos › WriteData
Envia uma mensagem WebSocket a um único cliente identificado pelo GUID de sua conexão, roteando o frame através do servidor de backup que detém a sessão.
function WriteData(const aGuid, aMessage: string): Boolean;
| Name | Type | Descrição |
|---|---|---|
aGuid | const string | Identificador da conexão de destino, atribuído pelo servidor de backup quando o handshake do cliente foi concluído. |
aMessage | const string | Payload de texto a entregar a esse cliente como um frame de texto WebSocket. |
True quando uma conexão com o GUID fornecido foi localizada em um servidor de backup registrado e o frame foi encaminhado para o seu socket; False quando nenhuma conexão ativa correspondente existe em nenhum lugar do cluster. (Boolean)
Esta sobrecarga solicita ao balanceador de carga que localize o servidor de backup que possui a conexão WebSocket cujo GUID corresponde a aGuid e encaminha a mensagem de texto a esse único cliente. O GUID é o valor exposto por TsgcWSConnection.Guid, normalmente capturado em OnConnect e armazenado pela aplicação. Apenas sessões WebSocket que passaram por upgrade são elegíveis; GUIDs pertencentes a requisições HTTP puras são rejeitados e False é retornado. Quando QueueOptions.Text é definido com um valor diferente de qmNone, o frame é enfileirado e despachado a partir do thread da conexão em vez do thread do chamador (não suportado quando IOHandlerOptions.IOHandlerType = iohIOCP). Utilize Broadcast para alcançar cada cliente ativo em todo o cluster em uma única chamada.
oServer.WriteData('guid', 'My First sgcWebSockets Message!.');
function WriteData(const aGuid: String; aStream: TStream; aSize: Integer = 0; const aStreaming: TwsStreaming = stmNone) : Boolean;
| Name | Type | Descrição |
|---|---|---|
aGuid | const String | Identificador da conexão de destino, atribuído pelo servidor de backup quando o handshake do cliente foi concluído. |
aStream | TStream | Stream de origem cujo conteúdo é enviado ao cliente como um frame binário WebSocket. O chamador permanece o proprietário do stream. |
aSize | Integer | Tamanho de fragmento opcional em bytes; quando maior que zero, o stream é dividido em múltiplos fragmentos deste tamanho. Use 0 (o padrão) para enviar todo o stream como um único frame. |
aStreaming | const TwsStreaming | Modo de streaming para transmissão fragmentada (stmNone, stmStart, stmContinue, stmFinish). Padrão stmNone, que envia uma mensagem completa e independente. |
True quando uma conexão com o GUID fornecido foi localizada em um servidor de backup registrado e o stream foi encaminhado ao seu socket; False quando não existe nenhuma conexão ativa correspondente em nenhum lugar do cluster. (Boolean)
Esta sobrecarga tem como destino um único cliente WebSocket com um payload binário lido do stream fornecido, roteando os bytes através do balanceador de carga para o servidor de backup que possui a sessão. O stream é consumido a partir de sua posição atual e o balanceador de carga não assume a propriedade dele, então o chamador deve mantê-lo vivo até que WriteData retorne (ou, ao enfileirar, até que o envio esteja completo). Quando QueueOptions.Binary é definido com um valor diferente de qmNone, o frame é enfileirado e despachado a partir da thread da conexão em vez da thread do chamador (não suportado quando IOHandlerOptions.IOHandlerType = iohIOCP). Use aSize junto com aStreaming ao enviar payloads muito grandes que devem ser fragmentados em múltiplos frames WebSocket.
oStream := TMemoryStream.Create;
try
oStream.LoadFromFile('payload.bin');
oServer.WriteData('guid', oStream);
finally
oStream.Free;
end;