| name | horse-streaming |
| description | Diretrizes e workflows para desenvolvimento e manutenção de transmissões de dados em tempo real (Web Streams e Server-Sent Events - SSE) no framework Horse. |
Horse Streaming Development Guide
Esta skill guia o desenvolvimento, depuração e manutenção de fluxos de streaming de dados (Web Streams / SSE) no framework Horse.
🟢 Conceitos Fundamentais
- Web Streams (NDJSON): Envio de dados formatados como múltiplos JSONs delimitados por quebras de linha (
\n), utilizando o cabeçalho Transfer-Encoding: chunked.
- Server-Sent Events (SSE): Fluxo unidirecional persistente onde o servidor envia eventos estruturados sob o formato
event: message\ndata: ...\n\n com o Content-Type text/event-stream.
🟢 Como usar nas Rotas do Horse
Para enviar dados via streaming, o manipulador da rota deve definir o ContentType adequado e invocar o Res.SendStream:
THorse.Get('/stream',
procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc)
begin
Res.ContentType('application/x-ndjson; charset=utf-8');
Res.SendStream(
procedure(const AWriter: IHorseStreamWriter)
begin
if AWriter.IsConnected then
AWriter.Write('{"data": "teste"}'#10);
end);
end);
🟢 Implementação dos Provedores Físicos
Ao criar ou estender novos provedores lógicos de transporte no Horse:
- Deve-se herdar uma classe especializada de
THorseStreamWriterBase e implementar os métodos Write (escrita física), IsConnected (validação física de conectividade do socket) e Close (fim de transmissão/descarregamento de buffers).
- Registrar a fábrica através de .