Server-Sent Events

Valum provides a middleware for the HTML5 Server-Sent Events protocol to stream notifications over a persistent connection.

The valum-0.3/Valum.ServerSentEvents.stream_events function creates a handling middleware and provide a valum-0.3/Valum.ServerSentEvents.SendEventCallback callback to transmit the actual events.

using Valum;
using Valum.ServerSentEvents;

app.get ("sse", stream_events ((req, send) => {
    send (null, "some data");
}));
var eventSource = new EventSource ("/sse");

eventSource.onmessage = function(message) {
    console.log (message.data); // displays 'some data'
};

Multi-line messages

Multi-line messages are handled correctly by splitting the data into into multiple data: chunks.

send (null, "some\ndata");
data: some
data: data