WebSocket连接到'ws://example.com/cable'失败:意外的响应代码:404。

5
我在Rails 5.0.0上创建了一个项目。接下来我做了和这个视频里一模一样的事情:https://www.youtube.com/watch?v=n0WUjGkDFS0。除了生成的频道外,我还生成了两个频道:chat和comment。我也同时阅读了此文档:https://github.com/rails/rails/tree/master/actioncable 。在routes.rb文件中,我加入了这行代码:mount ActionCable.server => '/cable'。在application.rb文件中,我加入了这行代码:config.action_cable.mount_path = '/cable'。结果是,我通过以下命令运行该项目:rails server -b SERVER_IP -p 3020。浏览器控制台中出现了以下错误:

WebSocket连接到'ws://site.com/cable'失败:意外响应代码:404

一部分运行该项目的日志如下:
Started GET "/cable" for SERVER_IP at 2016-07-12 16:20:14 +0300
Cannot render console from SERVER_IP! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
Started GET "/cable/" [WebSocket] for SERVER_IP at 2016-07-12 16:20:14 +0300
Request origin not allowed: example.com
Failed to upgrade to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: upgrade, HTTP_UPGRADE: websocket)
Finished "/cable/" [WebSocket] for SERVER_IP at 2016-07-12 16:20:14 +0300

错误可能是什么?我做错了什么?

定义:

  • SERVER_IP - 这个代替了服务器的原始IP地址。

  • example.com - 这个代替了网站的原始URL。


可能是重复的问题,请尝试使用以下方法(将development替换为您正在运行的环境):https://dev59.com/RlsW5IYBdhLWcg3wQVb2#35442353 - D-side
@D-side 对于像您这样的人来说,我还有很多要学习的。感谢您没有放弃我并指出了问题。非常感谢! - Colibri
我理解这是一个重复的吗? - D-side
@D-side 这是一个棘手的问题。这一行不会在 development.rb 文件中有帮助,但在 application.rb 文件中会有帮助。我添加了这个:config.action_cable.allowed_request_origins = ['http:// site.com'] - Colibri
是的,在括号中读取内容:您似乎没有在开发模式下运行应用程序,因此您应该修复与您正在使用的环境相对应的文件,我猜是production.rb,但您可能更清楚。(不排除某个地方存在错误的可能性) - D-side
1个回答

5
请确保您在 development.rb 文件中添加了以下行:
config.action_cable.url = "ws://localhost:3000/cable"

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接