如何在Phoenix的config/dev.exs中覆盖WebSocket超时值?
在config/dev.exs中覆盖WebSocket超时时间的方法
当然可以通过config/dev.exs来覆盖WebSocket的默认60秒超时,只需要把Endpoint中socket的配置和环境配置关联起来就行,给你两种实用的方式:
方式一:单独配置超时参数
- 修改
MyAppWeb.Endpoint.ex里的socket定义,让超时值从配置读取:
socket "/socket", MyAppWeb.UserSocket, websocket: [timeout: Application.compile_env(:my_app, :websocket_timeout, 60_000)], longpoll: false
这里60_000是默认的60秒超时,作为兜底值。
- 在
config/dev.exs中添加配置,覆盖超时为无限长:
config :my_app, :websocket_timeout, :infinity
方式二:配置完整的WebSocket参数块
如果以后可能需要调整其他WebSocket选项(比如max_frame_size、compress等),可以用这种更灵活的方式:
- 修改
MyAppWeb.Endpoint.ex:
socket "/socket", MyAppWeb.UserSocket, websocket: Application.compile_env(:my_app, MyAppWeb.Endpoint)[:websocket_opts], longpoll: false
- 在
config/config.exs里设置默认的WebSocket参数:
config :my_app, MyAppWeb.Endpoint, websocket_opts: [timeout: 60_000]
- 在
config/dev.exs中覆盖这个配置块:
config :my_app, MyAppWeb.Endpoint, websocket_opts: [timeout: :infinity]
两种方式都能实现你要的效果,按需选择即可。
内容的提问来源于stack exchange,提问作者Guenni
相关产品推荐
相关产品推荐

