TsgcWebSocketServer_HTTPAPIMétodos › WriteData

WriteData Method

Envia uma mensagem 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 HTTP.sys; False quando nenhuma conexão ativa correspondente existe. (Boolean)

Observações

Esta sobrecarga localiza a conexão cujo GUID corresponde a aGUID e envia a mensagem de texto a esse único cliente. O GUID é o valor exposto por TsgcWSConnection.Guid, tipicamente capturado em OnConnect e armazenado pela aplicação. Quando QueueOptions.Text é 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, o que evita travamentos quando várias threads enviam para o mesmo cliente. Quando Asynchronous está habilitado, o método retorna antes que o HTTP.sys tenha terminado de escrever o frame; a conclusão é reportada através de OnAsynchronous. Use Broadcast para alcançar cada cliente ativo 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 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 HTTP.sys; False quando nenhuma conexão ativa correspondente existe. (Boolean)

Observações

Esta sobrecarga direciona um único cliente com um payload binário lido a partir do stream fornecido. O stream é consumido a partir de sua posição atual e o servidor não assume a propriedade dele, portanto o chamador deve mantê-lo vivo até que WriteData retorne (ou, ao enfileirar ou quando Asynchronous está habilitado, até que o envio realmente tenha sido concluído). Quando QueueOptions.Binary é definido como um valor diferente de qmNone, o frame é enfileirado e despachado a partir da thread de conexão em vez da thread do chamador. Utilize aSize junto com aStreaming ao enviar payloads muito grandes que devem ser fragmentados em múltiplos frames WebSocket em vez de armazenados em buffer como uma única mensagem superdimensionada no HTTP.sys.

Exemplo


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

Voltar para Métodos