v0.10.0
Better SSE Version 0.10.0
npm install better-sse@latest
yarn add better-sse@latest
pnpm add better-sse@latest
This release adds the ability to batch and send multiple events in a single transmission.
In addition, it adds the new EventBuffer
class for users who still want to write out raw spec-compliant SSE fields into a text buffer that can be sent directly over the wire, but without all of the extra functionality that using a Session
provides.
Changes
Event batching (#42)
You can now batch and send multiple events in a single transmission using the new Session#batch
method, saving bandwidth and greatly improving performance in cases where you need to send multiple events at a time.
To do so, simply invoke the batch
method and pass a callback that takes an EventBuffer
as its first argument:
await session.batch(async (buffer) => {
await buffer.iterate(<my huge event list>);
});
You can use the same helper methods as you would with a session itself (push
, iterate
and stream
).
When your callback finishes execution - or resolves if it returns a promise - every event created with the buffer will be sent to the client all at once in a single network transmission.
See the API documentation for more.
New EventBuffer
class
The new EventBuffer
class allows you to write raw spec-compliant SSE fields into a text buffer that can be sent directly over the wire.
This is useful for users who do not need all the extra functionality that a Session
provides and instead want fine-grained control over the individual event fields they want to send to the client.
This is an advanced use-case. For most users, you should still stick with using Session
by default.
import { createEventBuffer } from "better-sse";
const myBuffer = createEventBuffer();
myBuffer
.retry(2400)
.event("my-event")
.id("123")
.data("one")
.data("two")
.data("three")
.dispatch();
res.write(myBuffer.read());
myBuffer.clear();
You can also pass an EventBuffer
instance directly to the Session#batch
method to write its contents to the session connection:
const myBuffer = createEventBuffer();
...
await session.batch(myBuffer);
See the API documentation for more.
⚠ DEPRECATED: Session
internal buffer modification methods (#52)
The ability to access and modify the internal Session
buffer is now deprecated, meaning that the following methods will be removed in the future: .event
, .data
, .id
, .retry
, .comment
, .dispatch
and .flush
.
These methods are now redundant, as instead of modifying the internal session buffer to be able to create and send individual events fields you can use the new EventBuffer
class separately yourself.
For users who only used the helper methods push
, stream
and iterate
this change will not affect you.
Full Changelog
Added
- Added the
Session#batch
method that can be used to batch multiple events into a single transmission over the wire. - Added the
EventBuffer
class that can be used to write raw spec-compliant SSE fields into a text buffer that can be sent directly over the wire.
Deprecated
- Deprecate the Session
.event
,.data
,.id
,.retry
,.comment
,.dispatch
and.flush
methods in favour of using event buffers instead.