问题标签 [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 投票
1 回答
13345 浏览

ruby-on-rails - 来自控制台的 ActionCable.server.broadcast

我可以在控制器中使用以下代码,但不能在控制台(两个开发环境)中使用。我正在使用 Rails 5.0.0.beta2。

控制台:

如何在控制台中使用它?

0 投票
3 回答
15473 浏览

ruby-on-rails - 不允许请求来源:使用 Rails5 和 ActionCable 时的 http://localhost:3001

Rails 5.0.0.beta2 中的应用程序在尝试使用 ActionCable 时出现服务器问题。

使用 localhost:3000 可以正常工作,因为这是大多数 ActionCable 的默认设置。但是如果我尝试在端口 3001 上运行 rails 服务器,它会给我Request origin not allowed: http://localhost:3001

ActionCable 文档提到使用类似的东西ActionCable.server.config.allowed_request_origins = ['http://localhost:3001'],如果我把它放进去,它对我有用config.ru

但这似乎是一个非常奇怪的地方。我觉得它应该可以放入初始化文件或我的 development.rb 环境配置文件中。

为了进一步证明我的观点,它应该被允许进入那里,ActionCable.server.config.disable_request_forgery_protection = true即使我将它包含在 development.rb 中,该设置也可以忽略请求来源。

为什么可以ActionCable.server.config.disable_request_forgery_protection在 development.rb 中工作,但ActionCable.server.config.allowed_request_origins不能(但在 config.ru 中工作)?

这不是一个紧迫的问题,因为我有几个选项可以解决。我只是想知道我是否遗漏了一些关于我想象这应该如何工作的明显内容。

0 投票
4 回答
8223 浏览

ruby-on-rails - 如何使用 RSpec 测试 ActionCable 频道?

我想知道如何测试 ActionCable 频道。

假设我有以下聊天频道:

subscribed方法更新了数据库并定义了两个要跨频道广播的流,但细节不是很重要,因为我的问题是一个更普遍的问题:

  • 如何设置测试来测试订阅此频道所涉及的逻辑?

在测试控制器动作等类似交互时,RSpec 提供了许多辅助方法和各种实用程序,但我找不到有关 RSpec 和 ActionCable 的任何信息。

0 投票
1 回答
2964 浏览

ruby-on-rails - Rails 5 - WebSocket 握手期间出错:“连接”标头值必须包含“升级”

我目前正在尝试使用 Rails 5.0.0.beta2 部署应用程序,但是当我在我的 javascript 控制台中加载应用程序时,我看到了

WebSocket 连接到“wss://example.com/cable”失败:WebSocket 握手期间出错:“Connection”标头值必须包含“Upgrade”

我使用 Apache/Passenger 作为 Web 服务器。

有没有其他人遇到过这个问题,如果有,你是如何解决的?

0 投票
2 回答
11621 浏览

ruby-on-rails - 如何使用 ActionCable 作为 API

我使用 Rails 5 beta 1 和 ActionCable 构建了一个非常简单的应用程序来显示用户何时上线并让他们互相发送消息。

现在,我基本上想采用 ActionCable 的客户端部分,在另一个应用程序(不在Rails 5 上运行)的上下文中实现它,并将它与第一个应用程序连接以发送和接收数据(例如在线用户或消息的状态)。

我假设要从第二个应用程序发送数据,我可以简单地发出 AJAX POST 请求。问题是:如何从我的第二个应用订阅第一个应用的开放连接?

甚至:如何通过 API 从另一个应用程序订阅我的 Rails 应用程序的 ActionCable 连接?

我的猜测是,我基本上想在我的第二个应用程序中以某种方式包含这个咖啡脚本:

0 投票
1 回答
216 浏览

ruby-on-rails-5 - 为什么 Rails 5 中的 actioncable 需要后备数据库?

也许这是一个愚蠢的问题,但我很好奇为什么 websockets 库需要 Redis 或 Postgres?

对于我将使用它的所有内容,我没有任何理由需要将该数据保存到磁盘。

0 投票
1 回答
1451 浏览

websocket - 当我在 Chrome 控制台上运行服务器和查询时,ActionCable 频道订阅失败

我正在使用 Rails 5.0.0.beta2 创建一个聊天应用程序,其中包括用于 WebSockets 的 ActionCable。当我启动 Puma 服务器并重新加载页面时,我正在尝试测试并查看我是否正确建立了连接以及是否可以获得订阅确认以在控制台中返回。http://www.youtube.com/watch?v=n0WUjGkDFS0&t=7m36s(请参阅 7:36 - 8:36) 我既没有看到元标记,也无法在 Chrome 控制台中查询 App。有没有人建议我可以做些什么来调试这个问题?

0 投票
10 回答
11282 浏览

ruby-on-rails-5 - 向 ActionCable 发送 auth_token 进行身份验证

我不使用网络作为动作电缆的端点,所以我想使用 auth_token 进行身份验证。默认情况下,action cable 使用会话用户 ID 进行身份验证。如何将参数传递给连接方法?

0 投票
2 回答
304 浏览

ruby-on-rails - ActionCable 无需升级到 Rails 5 beta

我目前有一个在 4.2.5 上运行的 Rails 应用程序,我想使用 ActionCable 而不必将整个东西升级到 Rails 5.0.0.beta3 版本并冒着破坏所有其他 gem 的风险。

按照我在互联网上看到的指南,我尝试 gem 'actioncable', github: 'rails/actioncable' 了哪些不起作用,因为 ActionCable 存储库已合并到 Rails 存储库中。我什至尝试过 gem 'actioncable', github: 'rails/rails' ,但这似乎不适用于对 ActionCable 合并到 Rails 时发生的版本重新编号。(5.0.0.beta* 以下的唯一版本是 0.0.0,这似乎是一个空的 gem。)

我还尝试将源设置为 ruby​​gems.org,希望能找到一个旧的预合并版本,但没有成功。

在不升级到 Rails 5 的情况下,如何将 ActionCable 集成到我的 4.2.5 项目中?

相反,我们什么时候可以期待 Rails 5 的第一个稳定版本?:)

0 投票
3 回答
1324 浏览

javascript - 类型错误:App.cable 未定义

我在我的机器上运行 ActionCable 时遇到问题。

在 assets/javascripts/channels 我有两个文件:

index.coffee

和 question.coffee

我的 application.js 文件如下所示:

当我启动电缆服务器和 Rails 服务器并在 Firefox 控制台中访问 localhost:3000 时,我看到两个错误:

我正在使用 rails 5 beta 3。我该如何解决这个问题?