Scala中Websocket连接的超时
Posted
技术标签:
【中文标题】Scala中Websocket连接的超时【英文标题】:TimeOut for Websocket Connection In Scala 【发布时间】:2017-06-27 16:31:17 【问题描述】:我有一个从客户端到 api 服务的 websocket 连接,然后从 API 服务到其他服务。 现在默认情况下连接超时(即当 web socket 连接上没有消息/通信时)是 1 分钟,我找到了增加它的设置,即使用 akka.http.client.idle-timeout = 300s 和 akka.http.server.idle-timeout = 300s .
但在我的情况下,这些设置适用于本地,超时增加(即在我的电脑上本地运行服务时),但当我在 EC2 上部署服务制作 docker 映像时却不行。
那么请谁能告诉我为什么它会这样?
【问题讨论】:
我不认为您在 EC2 上的服务直接暴露给客户,它可能通过负载均衡器/ngnix/或任何其他路由器进行路由......这些中间路由器可能正在关闭连接.你检查过吗? 嗨 Chenna Reddy,是的,我们使用的负载均衡器是 consul,并且从中重定向服务。所以我想我需要检查领事的设置。关于它的任何想法。 你可能想试试akka.http.server.request-timeout
from doc.akka.io/docs/akka/2.4.9-RC1/scala/http/common/…
我已经试过了,它在本地工作正常。但在 ec2 上托管时却不行
@Piyush_Rana 也许你错过了某种保活?这对github.com/akka/akka/issues/19945 有帮助吗?
【参考方案1】:
这看起来更像是 Docker 配置问题,而不是 akka 问题。您应该通过两种方式调试容器的配置:
-
登录 EC2 实例并使用
docker inspect <containerid>
检查环境参数
强制 Akka 打印出配置
您可以在 application.conf 中设置以下参数
akka
log-config-on-start = "on"
或者通过代码显式调用
myConfig.root().render()
【讨论】:
以上是关于Scala中Websocket连接的超时的主要内容,如果未能解决你的问题,请参考以下文章
websocket._exceptions.WebSocketProxyException:通过代理连接失败状态:503
浅谈WebsocketAjax轮询和长连接(long pull)
使用 stunnel 和 Ratchet 保护 websocket。连接已关闭