使用capybara和docker-chromedriver时无法连接到websocket

问题描述 投票:0回答:1

当通过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我正在运行带有actioncable for websockets的rails站点。

服务器设置为接受来自任何地方的请求,因此我认为cors不会导致问题。这是配置:

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

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

有没有人遇到过这种类型的错误,或者可能知道为什么前端无法连接到ws?从测试中我可以看到rails服务器正在从日志中正确触发actioncable。

ruby-on-rails docker capybara actioncable
1个回答
-1
投票

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

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

本来应该:

   config.action_cable.allowed_request_origins = [/ws:\/\/*/, /wss:\/\/*/] 
© www.soinside.com 2019 - 2024. All rights reserved.