systemquery/src/lib/agent/subsystems/http/ServerSentEventStream.mjs

27 lines
582 B
JavaScript

"use strict";
class ServerSentEventStream {
constructor(response) {
this.response = response;
this.next_id = 0;
this.response.writeHead(200, {
"content-type": "text/event-stream",
"cache-control": "no-store"
});
this.response.flushHeaders();
}
write(event_name, data) {
this.response.write(`id: ${this.next_id++}\n`);
this.response.write(`event: ${event_name}\n`);
this.response.write(`data: ${data}\n\n`);
}
write_json(event_name, data_obj) {
return this.write(event_name, JSON.stringify(data_obj));
}
}
export default ServerSentEventStream;