1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.observableEventSource = observableEventSource;
|
7 | function observableEventSource(observable) {
|
8 | return function observableEventSourceMiddleware(req, res) {
|
9 | if (!req.accepts('text/event-stream')) {
|
10 | res.status(400).send('This endpoint implements sever sent events.');
|
11 | return;
|
12 | }
|
13 |
|
14 | req.socket.setKeepAlive(true);
|
15 | req.socket.setTimeout(0);
|
16 |
|
17 |
|
18 | res.writeHead(200, {
|
19 | 'Content-Type': 'text/event-stream',
|
20 | 'Cache-Control': 'no-cache',
|
21 | 'Connection': 'keep-alive' });
|
22 |
|
23 | res.write('\n');
|
24 |
|
25 | var subscription = observable.subscribe(function (data) {
|
26 | res.write('data: ' + JSON.stringify(data) + '\n\n');
|
27 | if (res.flushHeaders) res.flushHeaders();
|
28 | });
|
29 |
|
30 |
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 | req.on('close', function () {
|
41 | return subscription.unsubscribe();
|
42 | });
|
43 | };
|
44 | } |
\ | No newline at end of file |