首页 > 解决方案 > 通过 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 上运行得非常好。有人知道我是否缺少设置吗?

标签: azureazure-web-app-serviceserver-sent-eventseventsource

解决方案


就我而言,这是缓冲问题。我没有得到回应或延迟很大。

我添加了标题以禁用响应的缓存和缓冲。

X-Accel-Buffering: no;

它帮助了我。


推荐阅读