我在Microsoft Azure上为处理服务器发送事件的NodeJS服务器设置了一个web应用程序。我还设置了一个静态web应用程序作为客户端。两者似乎都运行良好,客户端可以向服务器发送事件源请求,服务器接收并开始处理。但是客户端从未接收到响应,并且事件源保持"0";挂起";并最终超时。
这是服务器为发送请求而输入的功能:
response.writeHead(200, {
'Content-Type': 'text/event-stream',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive',
'Access-Control-Allow-Origin': "*",
'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept'
});
response.write('id: ' + id + 'n');
if (event) {
response.write('event: ' + event + 'n');
}
response.write("data: " + data + 'nn');
在本地,它在HTTP2上运行得非常好。有人知道我是否错过了一个场景吗?
在我的案例中,这是缓冲问题。我没有得到回应,或者得到了巨大的延迟。
我添加了头以禁用响应的缓存和缓冲。
X-Accel-Buffering: no;
它帮助了我。