How to use server-sent-events in express.js

后端 未结 5 542
温柔的废话
温柔的废话 2020-12-10 07:25

I setup my REST server with express.js. Now I want to add sse to this server. After I implemented this sse package, I get an error. I know that I get this error, when would

5条回答
  •  旧时难觅i
    2020-12-10 08:23

    Self-promotion: I wrote the ExpreSSE package that provides middlewares for working with SSE in express, you can find it on npm: @toverux/expresse.

    A simple example:

    router.get('/events', sse(/* options */), (req, res) => {
        let messageId = parseInt(req.header('Last-Event-ID'), 10) || 0;
    
        someModule.on('someEvent', (event) => {
            //=> Data messages (no event name, but defaults to 'message' in the browser).
            res.sse.data(event);
            //=> Named event + data (data is mandatory)
            res.sse.event('someEvent', event);
            //=> Comment, not interpreted by EventSource on the browser - useful for debugging/self-documenting purposes.
            res.sse.comment('debug: someModule emitted someEvent!');
            //=> In data() and event() you can also pass an ID - useful for replay with Last-Event-ID header.
            res.sse.data(event, (messageId++).toString());
        });
    });
    

    There is also another middleware to push the same events to multiple clients.

提交回复
热议问题