【问题标题】:Play Framework 2: Handle client disconnection in chunked responsePlay Framework 2:在分块响应中处理客户端断开连接
【发布时间】:2013-09-09 08:15:30
【问题描述】:

我正在使用分块编码将一些实时数据转发给网络客户端。

通过以下方式,我可以做出 HTTP 流式响应,

public Result action() {
    return ok(new StringChunks() {
        public void onReady(final Out<String> out) {
            openStream().onData(new Consumer<String>() {
                public void accept(String string) {
                    out.write(string);
                }
            }
        }
    }
}

但是我需要在客户端断开连接后清理一些资源。 (例如关闭浏览器窗口或当流到达 EOF 时)

使用 WebSocket 时,我可以使用 Iteratee.mapDone 检测客户端断开连接。

使用Chunks时有没有等效的检测方法?

谢谢

【问题讨论】:

    标签: java asynchronous playframework playframework-2.1 chunked-encoding


    【解决方案1】:

    嗯,刚刚想通了。

    Results.Chunked.Out&lt;A&gt; 对象有onDisconnected(Callback0) 方法,我可以注册一个断开回调。所以

    public Result action() {
        return ok(new StringChunks() {
            public void onReady(final Out<String> out) {
                out.onDisconnected(new F.Callback0() {
                    public void invoke() throws Throwable {
                        // clean up things ...
                    }
                }
                openStream().onData(new Consumer<String>() {
                    public void accept(String string) {
                        out.write(string);
                    }
                }
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-25
      • 2017-03-29
      • 2016-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多