带有播放的服务器发送事件:仅在进程终止时收到响应

时间:2017-01-18 13:40:59

标签: scala playframework server-sent-events chunked-encoding

我试图让示例webapp play-streaming-scala运行,在某些情况下我会遇到一种奇怪的行为。

我已经在某个主机的端口80上直接运行该应用,并且我使用Select BatchNo, Max(Id) As Id From BatchTracing Where ContentId = '7434' Group By BatchNo 检查输出。

我期待的是这样的:

curl -iv --raw http://somehost/scala/eventSource/liveClock

等,并且随着时间的推移,清楚地看到这些块一个接一个地出现。

现在,在一些机器上,这很好用。在校园里的其他人,这失败了。 * Hostname was NOT found in DNS cache * Trying 195.176.3.71... * Connected to somehost (0.0.0.0) port 80 (#0) > GET /scala/eventSource/liveClock HTTP/1.1 > User-Agent: curl/7.39.0 > Host: somehost > Accept: */* > < HTTP/1.1 200 OK HTTP/1.1 200 OK < Transfer-Encoding: chunked Transfer-Encoding: chunked < Content-Type: text/event-stream; charset=utf-8 Content-Type: text/event-stream; charset=utf-8 < Date: Wed, 18 Jan 2017 13:24:55 GMT Date: Wed, 18 Jan 2017 13:24:55 GMT < 10 data: 14 24 56 10 data: 14 24 56 10 data: 14 24 56 仅显示此内容然后停止:

curl

现在有趣的是:如果我杀死主机上的webapp,* Trying 195.176.3.71... * Connected to somehost (0.0.0.0) port 80 (#0) > GET /scala/eventSource/liveClock HTTP/1.1 > Host: somehost > User-Agent: curl/7.43.0 > Accept: */* > 突然“赶上”并将所有块一起吐出,关闭连接如下:

curl

可能导致这种行为的原因是什么?到底是怎么回事并拦截这些事件?有什么方法可以“强制冲洗”播放响应中的某些内容吗?

1 个答案:

答案 0 :(得分:0)

事实证明OS X的家长控制系统自动设置本地“隐藏”代理不会正确转发分块响应,从而使基于服务器发送事件的系统无法运行。太可惜了。