|
const express = require('express') |
|
const serveStatic = require('serve-static') |
|
const SseStream = require('ssestream') |
|
|
|
const app = express() |
|
app.use(serveStatic(__dirname)) |
|
app.get('/sse', (req, res) => { |
|
console.log('new connection') |
|
|
|
const sseStream = new SseStream(req) |
|
sseStream.pipe(res) |
|
const pusher = setInterval(() => { |
|
sseStream.write({ |
|
event: 'server-time', |
|
data: new Date().toTimeString() |
|
}) |
|
}, 1000) |
|
|
|
res.on('close', () => { |
|
console.log('lost connection') |
|
clearInterval(pusher) |
|
sseStream.unpipe(res) |
|
}) |
|
}) |
|
|
|
app.listen(8080, (err) => { |
|
if (err) throw err |
|
console.log('server ready on http://localhost:8080') |
|
}) |
|
|