我正在使用Play 2.6和Twitter流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})
}
答案 0 :(得分:3)
Play WS默认请求超时,默认情况下为2分钟。 这是文档的链接: https://www.playframework.com/documentation/2.6.x/ScalaWS#Configuring-Timeouts
所以你可以加入application.conf
行
play.ws.timeout.request = 10 minutes
指定所有请求的默认超时。
您还可以使用withRequestTimeout
构建器
WSRequest
方法为单个请求指定超时
/**
* 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
因此,要禁用sigle请求的请求超时,您可以使用以下代码
ws.url(someurl)
.withMethod("GET")
.withRequestTimeout(Duration.Inf)