我正在使用客户端的Firebase和服务器的Google Cloud Platform编写Web应用程序。我想使用服务器端事件(SSE)从服务器向客户端发送更新。
在客户中
eventReceived = (eventData) => {
console.log(eventData)
}
|
if (!'EventSource' in window) {
throw 'No SSE support'
}
var source = new EventSource(serverURL + '/events', { withCredentials: true })
source.onmessage = (event) => eventReceived(event.data)
在服务器中
res.set({
'Cache-Control': 'no-cache',
'Content-Type': 'text/event-stream',
'Connection': 'keep-alive'
});
res.flushHeaders();
res.write('retry: 10000\n\n')
let count = 0;
while (true) {
await new Promise(resolve => setTimeout(resolve, 2000));
res.write(`data: ${count}\n\n`)
////res.end()
}
}
除非我取消对 ///// res.end()的注释,否则客户端不会有任何响应,但这会关闭连接。
我尝试了各种标头选项,例如不压缩但无济于事。
任何帮助将不胜感激。 谢谢!