使用服务器发送的事件时,可以为SignalR禁用分块传输编码吗?

时间:2014-11-06 16:10:40

标签: asp.net proxy signalr server-sent-events chunked

当客户端在Web代理后面时,我在SignalR中遇到服务器发送的事件传输问题。根据用户的经验,SignalR尝试建立serverSentEvents连接,该连接失败,因此5秒后它将回退到longPolling。我使用Chrome 38(Firefox 31 ESR也无法与SSE连接)并因其他原因禁用了webSocket传输。

显然,代理正在重写HTTP 1.1 Transfer-Encoding块(将两个块合并为一个)。 SSE的{Notes}部分spec建议"作者也应注意,HTTP分块会对此协议的可靠性产生意外的负面影响。"所以,现在这是我最好的猜测。哦,当我在SingalR JavaScript客户端的EventSource消息事件处理程序中放置一个断点时,它永远不会被击中。

任何人都可以确认此分块更改可能是导致连接中断的原因吗?

有没有办法在服务器端禁用这种传输的分块?

以下是对GET / signalr / connect请求的TCP响应:

从服务器发送:

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Transfer-Encoding: chunked
Content-Type: text/event-stream
Expires: -1
Server: Microsoft-IIS/7.5
X-Content-Type-Options: nosniff
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 05 Nov 2014 15:49:29 GMT

13
data: initialized


2f
data: {"C":"d-3B309D97-E,1|F,0","S":1,"M":[]}


0

客户收到:

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Transfer-Encoding: chunked
Content-Type: text/event-stream
Expires: -1
Server: Microsoft-IIS/7.5
X-Content-Type-Options: nosniff
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 05 Nov 2014 15:49:29 GMT

42
data: initialized

data: {"C":"d-3B309D97-E,1|F,0","S":1,"M":[]}


0

0 个答案:

没有答案