【发布时间】:2016-11-15 05:35:36
【问题描述】:
我在 Rails 5.0.0 上创建了一个项目。
此外,我在此视频中所做的完全一样:https://www.youtube.com/watch?v=n0WUjGkDFS0
生成的频道除外。我生成了两个频道:聊天和评论。
我也并行阅读: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
此错误显示在控制台浏览器中:
与“ws://site.com/cable”的 WebSocket 连接失败:意外响应代码: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代替你运行的任何环境):stackoverflow.com/a/35442353/2076787 -
@D-side 对像你这样的人更多。谢谢你没有放弃我并指出了问题。谢谢!
-
我认为它真的是重复?
-
@D-side 难题。此行对 development.rb 文件没有帮助。但它有助于 application.rb 文件。我添加这个:
config.action_cable.allowed_request_origins = ['http:// site.com'] -
是的,请阅读括号中的内容:您似乎没有在开发模式下运行您的应用程序,因此您应该修复一个与您正在使用的环境相对应的文件,
production.rb,我猜,但你可能知道得更好。 (不要排除内部某处存在错误的可能性)
标签: ruby-on-rails nginx websocket ruby-on-rails-5 actioncable