2017-05-31 39 views
0

我一直试图通过HTTP将Play内容流式传输到Java中的Play Framework 2.5,Play Framework 2.5延迟流式处理内容

问题是,我不确定结果是否实际上是流式传输,这就是为什么我试图延迟每个项目发射,似乎没有工作出于某种原因。

代码

public Result test(){ 

    HttpEntity http = new HttpEntity.Streamed(Source.range(0, 99999) 
      .map(i -> ByteString.fromString(i.toString())) 
      .initialDelay(FiniteDuration.create(200, TimeUnit.MILLISECONDS)) 
      , Optional.empty(), Optional.of("text/event-stream")); 
    return ok().sendEntity(http); 
} 

的响应可以发现​​。

它确实返回值,但不会延迟它们,它也会在加载一段时间后发送整个响应。我不确定initialDelay是否是延迟的正确运营商。

这是发送Play流的正确方法吗?我一直在使用这个页面作为参考https://www.playframework.com/documentation/2.5.x/StreamsMigration25

谢谢你的帮助!

+0

您的浏览器和播放可能会缓冲流的某些部分。 initialDelay似乎是正确的配置使用。尝试发送包含新行的流:'i.toString()+“\ n”'并尝试使用curl查看结果 – vdebergue

回答

0

您应该使用delay而不是initialDelay,这只是流程开始时的延迟。请注意,您需要为缓冲区满时定义溢出策略。

+0

谢谢,这工作。我遇到同样的问题,即使使用此运算符来自具有反应驱动程序的MongoDB数据库的实际数据。不知道我是否应该为此提出新的问题。或者我可以给你发一个下午? –