新手问题 ActionCable 运行时,Websocket 连接不能建立的问题

adamshen · 发布于 2016年04月06日 · 最后由 chen2010z 回复于 2016年10月31日 · 931 次阅读
A908ae

是这样

为了试验,我拷贝了DHH的这个例子作为学习样本

启动cable、rails server和redis后访问页面,结果浏览器端总是报错说websocket连接无法建立

log显示puma接收到了请求,但是没有render任何东西

Puma starting in single mode...
* Version 2.15.3 (ruby 2.2.2-p95), codename: Autumn Arbor Airbrush
* Min threads: 0, max threads: 16
* Environment: development
* Listening on tcp://0.0.0.0:3001
Use Ctrl-C to stop

127.0.0.1 - - [06/Apr/2016 12:30:25] "GET / HTTP/1.1" HIJACKED -1 0.0006
127.0.0.1 - - [06/Apr/2016 12:30:33] "GET / HTTP/1.1" HIJACKED -1 0.0008
127.0.0.1 - - [06/Apr/2016 12:30:42] "GET / HTTP/1.1" HIJACKED -1 0.0006
127.0.0.1 - - [06/Apr/2016 12:33:00] "GET / HTTP/1.1" HIJACKED -1 0.0006
127.0.0.1 - - [06/Apr/2016 12:33:06] "GET / HTTP/1.1" HIJACKED -1 0.0007
127.0.0.1 - - [06/Apr/2016 12:33:15] "GET / HTTP/1.1" HIJACKED -1 0.0007
127.0.0.1 - - [06/Apr/2016 12:33:22] "GET / HTTP/1.1" HIJACKED -1 0.0008
127.0.0.1 - - [06/Apr/2016 12:33:30] "GET / HTTP/1.1" HIJACKED -1 0.0008
127.0.0.1 - - [06/Apr/2016 12:33:39] "GET / HTTP/1.1" HIJACKED -1 0.0008

由于代码是现成的,所以应该是我部署的问题。测试了一下redis和puma运行正常,gem依赖也没有问题。

请教还有哪些可能会导致这个现象?

共收到 4 条回复
De6df3

要注意修改 config/environments/production.rb 里面的: config.action_cable.allowed_request_origins = ['http://youhostname.com'] 允许你的网站访问 ActionCable,不然连接会被拒绝,这里要注意要带上 http:// 或 https://;

A908ae

#2楼 @huacnlee 谢谢坛主,果然是权限的问题,现在可以建立连接了。

我看文档上说在开发环境下,config.action_cable.allowed_request_origins的默认设置就是http://localhost:3000,所以一开始没有关注这个问题。

手工加入配置后还是不行,最后干脆在设置里把过滤功能禁掉,居然可以了。。。

96

我想弱弱的问下,redis怎么启动

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册