Server-Sent Events with Play:仅在进程终止时收到响应
Server-Sent Events with Play: response only received when process killed
我正在尝试将示例 Web 应用程序 play-streaming-scala 转换为 运行,但在某些情况下我会遇到奇怪的行为。
我直接在某个主机的端口 80 上安装了应用程序 运行ning,我正在使用 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
只显示这个然后停止:
* 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: */*
>
现在有趣的是:如果我杀死主机上的 webapp,curl
突然“赶上”并将所有块吐到一起,像这样关闭连接:
10
data: 14 35 20
* transfer closed with outstanding read data remaining
* Closing connection 0
curl: (18) transfer closed with outstanding read data remaining
什么可能导致该行为?到底发生了什么并拦截这些事件?有什么方法可以从播放响应中“强制刷新”某些内容吗?
原来由 OS X 的家长控制系统自动设置的本地“隐藏”代理没有正确转发分块响应,从而使基于 Server-Sent 事件的系统无法运行。可惜了。
我正在尝试将示例 Web 应用程序 play-streaming-scala 转换为 运行,但在某些情况下我会遇到奇怪的行为。
我直接在某个主机的端口 80 上安装了应用程序 运行ning,我正在使用 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
只显示这个然后停止:
* 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: */*
>
现在有趣的是:如果我杀死主机上的 webapp,curl
突然“赶上”并将所有块吐到一起,像这样关闭连接:
10
data: 14 35 20
* transfer closed with outstanding read data remaining
* Closing connection 0
curl: (18) transfer closed with outstanding read data remaining
什么可能导致该行为?到底发生了什么并拦截这些事件?有什么方法可以从播放响应中“强制刷新”某些内容吗?
原来由 OS X 的家长控制系统自动设置的本地“隐藏”代理没有正确转发分块响应,从而使基于 Server-Sent 事件的系统无法运行。可惜了。