TsgcWebSocketHTTPServerMétodos › WriteData

WriteData Method

Envia uma mensagem WebSocket a um único cliente identificado por seu GUID de conexão.

Overloads

Overload 1

Sintaxe

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

Parâmetros

NameTypeDescrição
aGuidconst stringIdentificador da conexão de destino conforme atribuído pelo servidor 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 e o frame foi entregue ao seu socket; False quando nenhuma conexão ativa correspondente existe. (Boolean)

Observações

Esta sobrecarga procura a conexão WebSocket cujo GUID corresponde a aGuid e envia 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 atualizadas 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 da thread de conexão, em vez da thread do chamador (não suportado quando IOHandlerOptions.IOHandlerType = iohIOCP). Use Broadcast para alcançar todos os clientes ativos em uma 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 conforme atribuído pelo servidor 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 e o stream foi entregue ao seu socket; False quando não existe nenhuma conexão ativa correspondente. (Boolean)

Observações

Esta sobrecarga tem como alvo um único cliente WebSocket com um payload binário lido do stream fornecido. O stream é consumido a partir de sua posição atual e o servidor não assume a propriedade, portanto o chamador deve mantê-lo ativo 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 de 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 vários frames WebSocket.

Exemplo


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

Voltar para Métodos