azure - 通过 Microsoft Azure Web 应用程序通过 http2 的事件源(服务器发送的事件)
问题描述
我在 Microsoft Azure 上为处理服务器发送事件的 NodeJS 服务器设置了一个 Web 应用程序。而且我还设置了一个静态 Web 应用程序作为客户端。两者似乎都工作正常,客户端可以向服务器发送事件源请求,服务器接收并开始处理。但是客户端永远不会收到响应,并且事件源保持“待处理”并最终超时。
这是服务器为发送请求而输入的函数:
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 + '\n\n');
在本地,它在 HTTP2 上运行得非常好。有人知道我是否缺少设置吗?
解决方案
就我而言,这是缓冲问题。我没有得到回应或延迟很大。
我添加了标题以禁用响应的缓存和缓冲。
X-Accel-Buffering: no;
它帮助了我。