27 lines
582 B
JavaScript
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;
|