-
遇到的问题:
- 部署 actioncable 到正式环境的时候,在谷歌 console 里报错为:
WebSocket connection to 'ws://example.com:28080/' failed: WebSocket is closed before the connection is established.
报错信息的大致意思.
- 但是在正式服务器上,cable 的 process 是正常运行的,log 里没有相关的 websocket 信息输出。
- ps: 在测试服务器上没有出现这种错误。是可以正常运行的。
-
相关的环境
- 测试服务器是阿里云,
- 正式服务器是 ucloud
- 跑的应用服务器是 puma
- rails4
-
相关处理:
- 看了华顺的那个关于 ActionCable 部署的细节经验分享.也改了关于限制的问题,还是一样的报错。
- 把正式环境还有测试环境的进程全部杀死。然后重新部署在正式环境,测试环境禁用 cable,还是报一样的错误。
找了很久的谷歌,没有什么信息。
- 谷歌了挺久的,尝试了之后都不可以。
在正式服务器上,当杀死 cable 的进程之后,报错信息也是
WebSocket connection to 'ws://example.com:28080/' failed: WebSocket is closed before the connection is established.
在本地或者测试服务器的时候,关闭 cable,会直接报错为:
WebSocket connection to 'ws://localhost:28080/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
疑问:同样是关闭了 cable 的进程,正式环境和测试环境以及本地的报错信息为何会有这样的差异?
出现这种错误是因为什么原因呢,因为测试环境和正式环境的配置,基本是相同的。