После внедрения SSE с Express я хотел сделать то же самое с Koa, вот так:
const Koa = require('koa');
const Router = require('koa-router');
const app = new Koa();
const router = new Router();
router.get('/stream', (ctx, next) => {
ctx.set({
'Access-Control-Allow-Origin': '*',
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
Connection: 'Keep-Alive',
});
const id = new Date().toLocaleTimeString();
ctx.res.write(`id: ${id}'\n`);
ctx.res.write(`data: CONNECTION ESTABLISHED)}\n\n`);
next();
});
app.use(router.routes());
app.listen(8080, () => {
console.log('Listening on port 8080');
});
А для моего клиента в конструкторе компонента React:
constructor(props) {
super(props);
this.state = {
source: new EventSource("http://localhost:8080/stream"),
};
}
Но по какой-то причине я получил следующее сообщение об ошибке на стороне клиента:
Firefox не может установить соединение с сервером на http://localhost:8080/stream.
Несмотря на то, что запрос моего клиента на /stream
действительно выполняется (но ответ не возвращается).
Что может быть причиной этой проблемы с соединением SSE?
У меня есть сервер Koa, прослушивающий данный порт, маршрут для перехвата начального запроса GET с правильными данными заголовка, и все же он терпит неудачу.