问题标签 [actioncable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - Heroku 上的 ActionCable 客户端未接收数据
我的 rails(5.0.0beta4)(和 actioncable)在本地运行良好。
但是在 heroku 上,浏览器似乎没有从 actioncable 流中接收任何数据。
这是我的heroku设置:
我正在使用 redis-to-go 插件
在config/environments/production.rb
在这里,我尝试了 wss 和 https 协议,但都不起作用。
在routes.rb
mount ActionCable.server => '/cable'
而在app/assets/javascripts/channels/cable.coffee.erb
我redis-cli monitor
在 redis-to-go 服务器上运行,它打印出我ActionCable.broadcast
调用的数据
在heroku日志中,我可以看到ActionCable
广播
但我在浏览器中看不到任何变化,但在本地一切正常。
我已经heroku restart
为每个部署运行
我还记得我使用 devise/warden 进行身份验证的一件事(也用于 actioncable)
那么我应该如何配置 actioncable 以在 heroku 上进行部署?
感谢帮助。
感谢 pdoherty926。我的浏览器控制台中没有 javascript 错误。
ruby-on-rails - 如何理解 rails5 的 actioncable
最近发现Rails5的ActionCable很有意思,所以想深入研究一下Rails5的ActionCable内部。但是不知道从哪里开始。
我希望有人为我铺平道路:例如:ActionCable 和 faye 和 message_bus 有什么区别..他们使用与 websockets 相同的协议吗?
ruby-on-rails - 如何在使用 Action Cable 时使状态保持一致
假设我们使用类似 current_user 的东西,它是一个 ServiceClass 的实例,它包含用户模型、会话参数和其他信息。问题是该变量在与 websocket 连接期间被设置,并被重用于不同订阅上的所有 AC 调用。
然后,在某个时候用户决定更新他的用户名,我们调用 current_user.update(new_username) 并且它工作正常。
但该用户下的其他 AC 订阅仍使用旧用户模型。我想由于每个订阅都在自己的线程下工作,因此在一个线程下更新用户模型不会在其他线程下更新它们。这种情况的最佳方法是什么?
ruby-on-rails - Rails 5 可作为独立服务器运行
没有太多关于动作电缆的文档,所以我对此有点迷茫。我正在使用 rails 5 应用程序,我正在尝试将 rails5 应用程序用作纯粹的 api 并将我的 JS 托管在其他地方。所以当我启动我的 actioncable 服务器时,我可以很容易地连接到 websocket,只需使用我内置的浏览器套接字支持:
我连接成功。我收到以下形式的 ping
除了我似乎无法向客户端广播任何消息。我试过了:
但只有 ping 进来。ActionCable 有它自己的概念,我还没有完全理解这些概念,比如频道和在 Rails 应用程序中“正常工作”的东西。但是如何使用 actioncable 的套接字服务器成功构建一个单独的独立 JS 应用程序?
ruby-on-rails - 如何在动作有线电视频道中使用 before_filter/before_action?
我正在尝试在动作有线电视频道中使用 before_filter/before_action,但服务器响应“未定义的方法 before_filter”。
任何想法?
提前致谢。
reactjs - 动作电缆,ReactJS 更新失败 Capybara 规范
我正在测试一个 Rails 5,它几乎对每个请求都使用动作电缆。UI 使用使用 JSON 对象更新的 reactjs 组件。
当我编写一个更新列表的测试时,它无法断言它已在视觉上更新,即使我可以断言数据库已更新。如果我手动测试(单击测试)一切正常。
这是我的代码示例:
https://github.com/instatodo/instatodo/blob/master/spec/features/todos_spec.rb
在 { 访问 todo_path(todo_with_tasks) } 之前描述“更新任务完成状态”
结尾
和反应组件:
https://github.com/instatodo/instatodo/blob/master/app/assets/javascripts/components/task.jsx
关于为什么这不起作用的任何想法?谢谢!
ruby-on-rails - 如何更改动作电缆导轨中的 ping 间隔
我正在使用 ActionCable 并在每 3 秒间隔后接收来自服务器的 ping(在 ActionCable 库中提到)。我的问题是:如何在订阅时更改 ping 间隔?
任何想法?
ruby-on-rails - 使用 AWS Elastic Beanstalk 部署 Rails ActionCable
我正在尝试在 AWS Elastic Beanstalk 上部署来自 DHH 的聊天演示。我已经按照这里的教程:https ://keithpblog.wordpress.com/2015/12/30/rails-5-tutorial-chat-app-can-we-deploy-it我已经设法得到解决方案部署在单个实例中,Redis 也启动并运行。但是当我尝试发布某些内容时,消息会保存在数据库中,但不会由 WebSocket 返回。我检查了 production.log 并且可以看到以下错误消息:
E,[2016-05-20T20:33:52.676577 #24281] 错误 - :出现异常 - Gem::LoadError(为 Action Cable pubsub 适配器指定了“redis”,但未加载 gem。添加gem 'redis'
到您的 Gemfile (并确保其版本为 Action Cable 要求的最低版本)。)
E,[2016-05-20T20:33:52.676826 #24281] 错误——:/opt/rubies/ruby-2.3.0/lib/ruby/gems/2.3.0/gems/actioncable-5.0.0.rc1/ lib/action_cable/server/configuration.rb:37:in `rescue in pubsub_adapter'
/opt/rubies/ruby-2.3.0/lib/ruby/gems/2.3.0/gems/actioncable-5.0.0.rc1/lib/action_cable/server/configuration.rb:34:in `pubsub_adapter'
我的 Gemfile 中也有: gem 'redis', '~>3.2'
有任何想法吗?谢谢!