TsgcWebSocketLoadBalancerServerMétodos › WriteData

WriteData Method

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.

Overloads

Overload 1

Sintaxe

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

Parâmetros

NameTypeDescrição
aGuidconst stringIdentificador da conexão de destino, atribuído pelo servidor de backup quando o handshake do cliente foi concluído.
aMessageconst stringPayload de texto a entregar a esse cliente como um frame de texto WebSocket.

Valor de retorno

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)

Observações

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.

Exemplo


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

Sobrecarga 2

Sintaxe

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

Parâmetros

NameTypeDescrição
aGuidconst StringIdentificador da conexão de destino, atribuído pelo servidor de backup quando o handshake do cliente foi concluído.
aStreamTStreamStream de origem cujo conteúdo é enviado ao cliente como um frame binário WebSocket. O chamador permanece o proprietário do stream.
aSizeIntegerTamanho 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.
aStreamingconst TwsStreamingModo de streaming para transmissão fragmentada (stmNone, stmStart, stmContinue, stmFinish). Padrão stmNone, que envia uma mensagem completa e independente.

Valor de retorno

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)

Observações

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.

Exemplo


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

Voltar para Métodos