问题标签 [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.

0 投票
0 回答
268 浏览

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 错误。

0 投票
2 回答
151 浏览

ruby-on-rails - 如何理解 rails5 的 actioncable

最近发现Rails5的ActionCable很有意思,所以想深入研究一下Rails5的ActionCable内部。但是不知道从哪里开始。

我希望有人为我铺平道路:例如:ActionCable 和 faye 和 message_bus 有什么区别..他们使用与 websockets 相同的协议吗?

0 投票
1 回答
329 浏览

ruby-on-rails - 如何在使用 Action Cable 时使状态保持一致

假设我们使用类似 current_user 的东西,它是一个 ServiceClass 的实例,它包含用户模型、会话参数和其他信息。问题是该变量在与 websocket 连接期间被设置,并被重用于不同订阅上的所有 AC 调用。

然后,在某个时候用户决定更新他的用户名,我们调用 current_user.update(new_username) 并且它工作正常。

但该用户下的其他 AC 订阅仍使用旧用户模型。我想由于每个订阅都在自己的线程下工作,因此在一个线程下更新用户模型不会在其他线程下更新它们。这种情况的最佳方法是什么?

0 投票
1 回答
1088 浏览

ruby-on-rails - Rails 5 可作为独立服务器运行

没有太多关于动作电缆的文档,所以我对此有点迷茫。我正在使用 rails 5 应用程序,我正在尝试将 rails5 应用程序用作纯粹的 api 并将我的 JS 托管在其他地方。所以当我启动我的 actioncable 服务器时,我可以很容易地连接到 websocket,只需使用我内置的浏览器套接字支持:

我连接成功。我收到以下形式的 ping

除了我似乎无法向客户端广播任何消息。我试过了:

但只有 ping 进来。ActionCable 有它自己的概念,我还没有完全理解这些概念,比如频道和在 Rails 应用程序中“正常工作”的东西。但是如何使用 actioncable 的套接字服务器成功构建一个单独的独立 JS 应用程序?

0 投票
1 回答
1260 浏览

ruby-on-rails - 如何在动作有线电视频道中使用 before_filter/before_action?

我正在尝试在动作有线电视频道中使用 before_filter/before_action,但服务器响应“未定义的方法 before_filter”。

任何想法?

提前致谢。

0 投票
1 回答
2602 浏览

ruby-on-rails - Actioncable 连接用户列表

我正在像这样对 ActionCable 中的用户进行身份验证:

是否可以获得已连接的用户列表?我用谷歌搜索,但只发现了这个 stackoverflow 问题:第一第二

0 投票
1 回答
149 浏览

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

关于为什么这不起作用的任何想法?谢谢!

0 投票
1 回答
3090 浏览

ruby-on-rails - ActionCable:每个用户一个频道

我正在为我的 rails 应用程序处理通知。有 User 模型和控制器,并且 Like 模型与 User 关联,一个 User 有许多 Likes 关联。

这个想法是,如果用户喜欢另一个用户的个人资料,则个人资料的所有者将收到实时通知。

这是我理解 ActionCable 的应用程序。我研究了电缆 api,pub-sub 对我来说是新的。我能够通过单一渠道进行成功的沟通,并且成功使用了授权。但是,我仍然不明白如何为每个用户使用单个频道(动态生成的频道),因此发布给一个用户的消息不会发送给另一个用户。

动态通道可以吗?

或者,是否有其他方式可以让单个频道满足所有用户的需求

0 投票
2 回答
3892 浏览

ruby-on-rails - 如何更改动作电缆导轨中的 ping 间隔

我正在使用 ActionCable 并在每 3 秒间隔后接收来自服务器的 ping(在 ActionCable 库中提到)。我的问题是:如何在订阅时更改 ping 间隔?

任何想法?

0 投票
1 回答
1680 浏览

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'

有任何想法吗?谢谢!