0

通过 capybara 测试运行时,当我需要来自 websocket 的响应时,我的测试失败,这会在 console.log 中弹出:

WebSocket connection to 'ws://127.0.0.1:3001/cable' failed: WebSocket is closed before the connection is established.

我正在使用 docker-chromedriver 图像。驱动程序版本是:ChromeDriver 2.46.628388 我正在运行一个带有用于 websockets 的 actioncable 的 rails 站点。

服务器设置为接受来自任何地方的请求,所以我认为 cors 不会引起问题。这是配置:

   config.action_cable.allowed_request_origins = [/http:\/\/*/, /https:\/\/*/] 

在开发环境中一切正常。当我使用 chromedriver 运行验收测试时,我的测试一直有效,直到我到达需要使用 actioncable 的部分,然后测试失败。

以前有没有人遇到过这种类型的错误,或者可能对前端无法连接到 ws 的原因有所了解?从测试中我可以看到 rails 服务器正确地从日志中触发 actioncable。

4

1 回答 1

0

问题最终是我让所有域都通过 http,协议应该是 ws。

   config.action_cable.allowed_request_origins = [/http:\/\/*/, /https:\/\/*/] 

本来应该:

   config.action_cable.allowed_request_origins = [/ws:\/\/*/, /wss:\/\/*/] 
于 2019-04-01T09:48:33.353 回答