При использовании SSE соединения происходит задержка отправки сообщения на клиент в 1 минуту. Сразу после отработки response на клиенте в консоли браузера появляется ошибка с текстом "net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK)". Задержка отправления сообщения на клиент в 1 минуту свойственна для всех приложений размещенных на сервере. При работе с ngrok данной ошибки не возникает.
Код
router.get('/sse', (req, res) => {
res.setHeader('Content-Type', 'text/event-stream');
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Connection', 'keep-alive');
console.log('CONNCET');
res.write(`data: {"ping": "pong"} \n\n`);
const notifCenterListener = (data) => {
if (JSON.parse(data).users.split('-').includes(req.query.id)) {
if (connectionId[req.originalUrl] != JSON.parse(data).uuid) {
connectionId[req.originalUrl] = JSON.parse(data).uuid;
console.log('notif')
res.write(`data: {"title": "${JSON.parse(data).title}","text": "${JSON.parse(data).text}","notifCenter": "true"}\n\n`);
}
}
}
noticeEmit.on('notifCenter', notifCenterListener);
const pushListener = (data) => {
const pushSettings = JSON.parse(data);
if (pushSettings.receivers.split('-').includes(req.query.id)) {
console.log('push')
res.write(`data: {"push": "${pushSettings.link}", "text": "${pushSettings.text}", "id": "${pushSettings.id}", "subdomain": "${pushSettings.subdomain}", "receivers": "${pushSettings.receivers.split('-')}"}\n\n`);
}
}
pushEmit.on('push', pushListener);
req.on('close', function(){
console.log('closed')
pushEmit.removeListener('push', pushListener);
noticeEmit.removeListener('notifCenter', notifCenterListener);
});
})