From 3dafe28ad42b8fda4efa000e4ad32586f397be30 Mon Sep 17 00:00:00 2001 From: Thiago Valentim Date: Fri, 21 Jan 2022 15:17:42 -0300 Subject: [PATCH] fix(sse): stream sink content closes #8877 --- packages/core/router/sse-stream.ts | 2 +- .../test/router/router-response-controller.spec.ts | 4 ++-- packages/core/test/router/sse-stream.spec.ts | 14 +++++++++++--- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/packages/core/router/sse-stream.ts b/packages/core/router/sse-stream.ts index ec583cb15d6..3bf666c03c3 100644 --- a/packages/core/router/sse-stream.ts +++ b/packages/core/router/sse-stream.ts @@ -86,7 +86,7 @@ export class SseStream extends Transform { destination.flushHeaders(); } - destination.write(':\n'); + destination.write('\n'); return super.pipe(destination, options); } diff --git a/packages/core/test/router/router-response-controller.spec.ts b/packages/core/test/router/router-response-controller.spec.ts index ecbbc7c361a..605c4ee7aab 100644 --- a/packages/core/test/router/router-response-controller.spec.ts +++ b/packages/core/test/router/router-response-controller.spec.ts @@ -299,7 +299,7 @@ describe('RouterResponseController', () => { request.destroy(); await written(response); expect(response.content).to.eql( - `: + ` id: 1 data: test @@ -421,7 +421,7 @@ data: test await written(response); expect(response.content).to.eql( - `: + ` event: error id: 1 data: Some error diff --git a/packages/core/test/router/sse-stream.spec.ts b/packages/core/test/router/sse-stream.spec.ts index b4ccdf19173..173a522fe63 100644 --- a/packages/core/test/router/sse-stream.spec.ts +++ b/packages/core/test/router/sse-stream.spec.ts @@ -43,6 +43,7 @@ describe('SseStream', () => { const sse = new SseStream(); const sink = new Sink(); sse.pipe(sink); + sse.writeMessage( { data: 'hello\nworld', @@ -57,8 +58,9 @@ describe('SseStream', () => { ); sse.end(); await written(sink); + expect(sink.content).to.equal( - `: + ` id: 1 data: hello data: world @@ -75,6 +77,7 @@ data: monde const sse = new SseStream(); const sink = new Sink(); sse.pipe(sink); + sse.writeMessage( { data: { hello: 'world' }, @@ -83,8 +86,9 @@ data: monde ); sse.end(); await written(sink); + expect(sink.content).to.equal( - `: + ` id: 1 data: {"hello":"world"} @@ -96,6 +100,7 @@ data: {"hello":"world"} const sse = new SseStream(); const sink = new Sink(); sse.pipe(sink); + sse.writeMessage( { type: 'tea-time', @@ -107,8 +112,9 @@ data: {"hello":"world"} ); sse.end(); await written(sink); + expect(sink.content).to.equal( - `: + ` event: tea-time id: the-id retry: 222 @@ -148,6 +154,7 @@ data: hello return sink; }, ); + sse.pipe(sink, { additionalHeaders: { 'access-control-headers': 'some-cors-value' }, }); @@ -159,6 +166,7 @@ data: hello sse = new SseStream(req); sse.pipe(res); }); + server.listen(() => { const es = new EventSource( `http://localhost:${(server.address() as AddressInfo).port}`,