Play Framework ws libray 流方法在连接 2 分钟后停止
Play Framework ws libray stream method stops after 2 minutes on connection
我正在使用 Play 2.6 和推特流 API。
下面是我如何使用 ws 库的 stream() 方法连接到 Twitter。
问题是,蒸汽总是在刚好 2 分钟后停止。我尝试了不同的主题,行为非常一致。
好像有设置,但是我没找到。
我不确定它是在游戏端还是推特端。
非常感谢任何帮助。
ws.url("https://stream.twitter.com/1.1/statuses/filter.json")
.sign(OAuthCalculator(ConsumerKey(credentials._1, credentials._2), RequestToken(credentials._3, credentials._4)))
.withQueryStringParameters("track" -> topic)
.withMethod("POST")
.stream()
.map {
response => response.bodyAsSource.map(t=> {t.utf8String})
}
Play WS 有默认的请求超时时间,默认为 2 分钟。
这是文档的 link:
https://www.playframework.com/documentation/2.6.x/ScalaWS#Configuring-Timeouts
所以你可以把你的application.conf
行写成
play.ws.timeout.request = 10 minutes
为所有请求指定默认超时。
您还可以使用 WSRequest
构建器
的 withRequestTimeout
方法为单个请求指定超时
/**
* Sets the maximum time you expect the request to take.
* Use Duration.Inf to set an infinite request timeout.
* Warning: a stream consumption will be interrupted when this time is reached unless Duration.Inf is set.
*/
def withRequestTimeout(timeout: Duration): WSRequest
因此,要禁用单个请求的请求超时,您可以使用以下代码
ws.url(someurl)
.withMethod("GET")
.withRequestTimeout(Duration.Inf)
我正在使用 Play 2.6 和推特流 API。 下面是我如何使用 ws 库的 stream() 方法连接到 Twitter。
问题是,蒸汽总是在刚好 2 分钟后停止。我尝试了不同的主题,行为非常一致。 好像有设置,但是我没找到。
我不确定它是在游戏端还是推特端。 非常感谢任何帮助。
ws.url("https://stream.twitter.com/1.1/statuses/filter.json")
.sign(OAuthCalculator(ConsumerKey(credentials._1, credentials._2), RequestToken(credentials._3, credentials._4)))
.withQueryStringParameters("track" -> topic)
.withMethod("POST")
.stream()
.map {
response => response.bodyAsSource.map(t=> {t.utf8String})
}
Play WS 有默认的请求超时时间,默认为 2 分钟。 这是文档的 link: https://www.playframework.com/documentation/2.6.x/ScalaWS#Configuring-Timeouts
所以你可以把你的application.conf
行写成
play.ws.timeout.request = 10 minutes
为所有请求指定默认超时。
您还可以使用 WSRequest
构建器
withRequestTimeout
方法为单个请求指定超时
/**
* Sets the maximum time you expect the request to take.
* Use Duration.Inf to set an infinite request timeout.
* Warning: a stream consumption will be interrupted when this time is reached unless Duration.Inf is set.
*/
def withRequestTimeout(timeout: Duration): WSRequest
因此,要禁用单个请求的请求超时,您可以使用以下代码
ws.url(someurl)
.withMethod("GET")
.withRequestTimeout(Duration.Inf)