Server-sent Events support
Sending a server-sent is as simple as calling context.sendEvent(eventDetails, interval)
.
Please see the Context object for more details about the sendEvent
method.
import { controller, get } from 'kikwit';
@controller
export class StockMarket {
@get
ticker(context) {
let lastEventId = context.lastEventId || 0;
const randomValue = () => Number.parseFloat((Math.random()*2).toFixed(2)) * (Math.random() < 0.5 ? -1 : 1);
const eventDetails = {
data: {
DJIA: randomValue(),
Nasdaq: randomValue(),
['S&P 500']: randomValue(),
GOLD: randomValue()
},
id: ++lastEventId,
event: 'tick',
retry: 5000
};
context.sendEvent(eventDetails, 5000);
}
}
The client call for the above would be something like
var eventSrc = new EventSource('/stockmarket/ticker');
eventSrc.onmessage = function(event) {
console.log(event.data);
}