You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Phoenix的config/dev.exs中覆盖WebSocket超时值?

在config/dev.exs中覆盖WebSocket超时时间的方法

当然可以通过config/dev.exs来覆盖WebSocket的默认60秒超时,只需要把Endpoint中socket的配置和环境配置关联起来就行,给你两种实用的方式:

方式一:单独配置超时参数

  1. 修改MyAppWeb.Endpoint.ex里的socket定义,让超时值从配置读取:
socket "/socket", MyAppWeb.UserSocket,
  websocket: [timeout: Application.compile_env(:my_app, :websocket_timeout, 60_000)],
  longpoll: false

这里60_000是默认的60秒超时,作为兜底值。

  1. 在config/dev.exs中添加配置,覆盖超时为无限长:
config :my_app, :websocket_timeout, :infinity

方式二:配置完整的WebSocket参数块

如果以后可能需要调整其他WebSocket选项(比如max_frame_size、compress等),可以用这种更灵活的方式:

  1. 修改MyAppWeb.Endpoint.ex:
socket "/socket", MyAppWeb.UserSocket,
  websocket: Application.compile_env(:my_app, MyAppWeb.Endpoint)[:websocket_opts],
  longpoll: false
  1. 在config/config.exs里设置默认的WebSocket参数:
config :my_app, MyAppWeb.Endpoint,
  websocket_opts: [timeout: 60_000]
  1. 在config/dev.exs中覆盖这个配置块:
config :my_app, MyAppWeb.Endpoint,
  websocket_opts: [timeout: :infinity]

两种方式都能实现你要的效果,按需选择即可。

内容的提问来源于stack exchange,提问作者Guenni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 00:50:38