首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >action cable在本地订阅,但不在heroku上订阅

action cable在本地订阅,但不在heroku上订阅
EN

Stack Overflow用户
提问于 2017-01-26 04:07:58
回答 4查看 2.3K关注 0票数 10

我试了所有我能在网上找到的东西,但都不起作用。希望一些新人能看到这个问题。这是我第一次使用ActionCable,一切都在本地运行得很好,但在推送到heroku时。我的日志没有显示任何像我的dev服务器那样的actioncable订阅:

代码语言:javascript
运行
复制
[ActionCable] [email@email.com] MsgsChannel is streaming from msg_channel_34

当发送消息时,我确实看到了[ActionCable] Broadcasting to msg_channel_34:,但它们没有被追加,我猜这意味着received方法没有被访问/调用?

我确实注意到heroku的日志上写着Listening on tcp://0.0.0.0:5000,而作为开发人员,它正在监听本地主机:3000。我应该以某种方式指向我的heroku应用程序吗?

相关配置文件如下:

Procfile:

代码语言:javascript
运行
复制
web: bundle exec puma -p 5000  ./config.ru  
actioncable: bundle exec puma -p 28080  cable/config.ru  
redis: redis-server  

*感谢下面的评论,我也在尝试。仍然不能工作,但我可以看到它正在侦听的端口正在改变,这让我相信它与配置有关?:

代码语言:javascript
运行
复制
web: bundle exec puma -p $PORT  ./config.ru  
actioncable: bundle exec puma -p $PORT  cable/config.ru  
redis: redis-server  

/cable/config.ru

代码语言:javascript
运行
复制
require ::File.expand_path('../../config/environment',  __FILE__)  
Rails.application.eager_load!

ActionCable.server.config.allowed_request_origins = ["http://localhost:3000"]  
run ActionCable.server 

config/environment/development.rb

代码语言:javascript
运行
复制
config.action_cable.allowed_request_origins = ['localhost:3000']
config.action_cable.url = "ws://localhost:3000/cable"

config/environment/production.rb

代码语言:javascript
运行
复制
config.web_socket_server_url = "wss://app-name.herokuapp.com/cable" 
  config.action_cable.allowed_request_origins = ['https://app-name.herokuapp.com', 'http://app-name.herokuapp.com']

config/cable.yml

代码语言:javascript
运行
复制
local: &local  
  adapter: async
  :url: redis://localhost:6379
  :host: localhost
  :port: 6379
  :timeout: 1
  :inline: true
development: *local  
test: *local


production:
  :url: redis:<%= ENV["REDISTOGO_URL"] %>
  adapter: redis

已设置<%= ENV["REDISTOGO_URL"] %>,通过运行heroku config确认

routes.rb

代码语言:javascript
运行
复制
mount ActionCable.server => '/cable'

为什么这在dev上有效,而在heroku上无效?我已经读了好几个小时了,但还是想不明白。谢谢!

更新: heroku日志:

代码语言:javascript
运行
复制
2017-01-25T20:32:57.329656+00:00 heroku[web.1]: Starting process with command `bundle exec puma -p 5000  ./config.ru`
2017-01-25T20:32:59.600554+00:00 app[web.1]: Puma starting in single mode...
2017-01-25T20:32:59.600574+00:00 app[web.1]: * Version 3.6.2 (ruby 2.3.1-p112), codename: Sleepy Sunday Serenity
2017-01-25T20:32:59.600575+00:00 app[web.1]: * Min threads: 0, max threads: 16
2017-01-25T20:32:59.600577+00:00 app[web.1]: * Environment: production
2017-01-25T20:33:02.375128+00:00 app[web.1]: profile controller
2017-01-25T20:33:02.588653+00:00 app[web.1]: Use Ctrl-C to stop
2017-01-25T20:33:02.588446+00:00 app[web.1]: * Listening on tcp://0.0.0.0:5000
2017-01-25T20:33:17.681469+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2017-01-25T20:33:17.681469+00:00 heroku[web.1]: Stopping process with SIGKILL
2017-01-25T20:33:17.862118+00:00 heroku[web.1]: Process exited with status 137
2017-01-25T20:33:57.501746+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2017-01-25T20:33:57.501908+00:00 heroku[web.1]: Stopping process with SIGKILL
2017-01-25T20:33:57.630071+00:00 heroku[web.1]: Process exited with status 137
2017-01-25T20:33:57.642753+00:00 heroku[web.1]: State changed from starting to crashed
EN

Stack Overflow用户

发布于 2017-01-27 23:26:22

你的应用程序名是字面上的app-name吗?我想不会。这些值很有可能是。

代码语言:javascript
运行
复制
config.web_socket_server_url = "wss://app-name.herokuapp.com/cable" 
config.action_cable.allowed_request_origins = ['https://app-name.herokuapp.com', 'http://app-name.herokuapp.com']

需要更新以使用您要连接到的实际面向公众的URL。

票数 2
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41860718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档