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

ruby-on-rails - ActionCable、Heroku 自定义域和 Cookie

这是场景。我正在将 ActionCable 用于一个站点(我们称之为www.example.com)。它在开发中完美运行,但是一旦我将它推送到 Heroku,我就会收到 WebSocket 连接的 302 错误。

问题似乎源于我让 Heroku 使用自定义域这一事实。因此,如果我将 WebSocket 指向wss://example.com,它会给我一个 302,我假设是因为它被重定向到example.herokuapp.comurl?

所以鉴于这个问题,我被迫将 WebSocket 连接指向wss://example.herokuapp.com. 我现在遇到的问题是,因为它本质上是我指向的一个新域,所以来自 example.com 的 cookie 不与example.herokuapp.com. 这意味着example.herokuapp.com正在传递一个空白 cookie,该 cookie 实际上是在我用于身份验证的 example.com 上设置的。

我通过记录未签名的cookie(只是暂时未签名以进行测试,不要担心安全性)并在example.herokuapp.com服务器上设置该cookie来验证这是问题所在。之后它工作得很好。

显然,我不能让某人去这两个网站只是为了设置一个该死的 cookie...

我希望找到一种方法来解决原始问题,并能够将 WebSocket 指向我的自定义域,wss://example.com而不必担心 cookie 签名问题。这可能吗?

example.herokuapp.com如果没有,在域上设置 cookie 的最佳方法是什么?

PS 是的,我查看了有关 ActionCable 和 Heroku 的其他 SO 问题,但似乎没有一个涉及自定义域。这个讨论了一种 cookie 解决方法,但我觉得它不适用于这种情况,因为它们不是相同的子域:Deploying Ruby on Rails app to Heroku while using Action Cable (Puma port listener)

感谢您花时间帮助我:)

[编辑] 这里似乎与这个问题非常相似,但我得到的是 302 而不是 503。Heroku 错误 503,多个域上的 webSockets

0 投票
1 回答
3049 浏览

android - 如何将 android 连接到 actioncable websocket 连接?

我是 Android 开发的新手,我正在尝试在我的 Android 应用程序中添加一个聊天室,由 Rail 的新 actioncable 提供支持。我目前的聊天室使用 Firebase 工作,这很酷。但是,我想拥有 Firebase 不支持的其他功能,所以我想将所有内容移到我的服务器上。问题是我对android上的websockets了解不多。

下面是在 rails 浏览器端使用的 javascript 信息。这在没有问题的情况下有效。

0 投票
1 回答
1835 浏览

elixir - 凤凰频道的广播如何影响其他节点上的客户端?

在使用 WebSockets 时,我正在尝试将 Phoenix Channels 与新的Rails ActionCable进行比较。

在某些情况下,ActionCable 在向所有客户端广播消息时使用 Redis 来处理 PubSub。示例场景:单独节点上的 3 个 rails 进程中的 1 个将能够向连接在所有 Web 服务器上的客户端广播。这是通过点击 Redis 来完成的,Redis 依次发布到所有 rails 服务器,然后推送到所有连接的客户端。

我最近读到了Phoenix websocket 连接实现的 200 万个 websocket 连接。

还发现了这个 gem:Phoenix 1.0 发行说明提到了有关频道的内容:

即使在机器集群上,您的消息也会自动跨节点广播

Phoenix 如何能够跨节点向客户端广播?它是否在后台使用邮箱和/或其他一些进程间通信?

这类似于本文中的问题 2 )

谢谢!

0 投票
5 回答
6334 浏览

ruby-on-rails - 未初始化的常量 > ActionCable::Server::Configuration::ApplicationCable

当我运行服务器时,它的抛出错误显示在下面的日志中。我用谷歌搜索了很多,但没有找到背后的原因。有人请给它一些光。

宝石文件

日志:

0 投票
4 回答
4254 浏览

ruby - application 和 actioncable 不会共享 cookie

我正在使用设计进行身份验证,但是当我实施您的方法时,我得到“未经授权的连接尝试被拒绝”

经过几个小时的搜索,我发现:

返回零。在下面的代码块中。

我查了一下,肯定有一个cookie,但它不包含Devise设置的cookie数据。

要检查是否真的设置了“user.id”,我在视图中提出它。例外情况,这将返回用户 ID

我的问题/问题:

似乎 cookie 在 actioncable 服务器上不可用。
有没有办法将 Devise 设置的 cookie 与有线电视服务器共享?

https://github.com/stsc3000/actioncable-chat.git

0 投票
3 回答
814 浏览

ruby-on-rails - Redis 重新连接失败 - 操作电缆

我正在使用 Rails 5 预发行版上的 Action Cable。每当我启动服务器时,我都会收到此错误

重新启动服务器几次没有帮助。有什么我做错了吗?

我在 Ubuntu 14.04 上工作

0 投票
1 回答
4647 浏览

amazon-web-services - AWS 上的 ActionCable:WebSocket 握手期间出错:意外响应代码:404

我们正在尝试将 DHH 的简单 Rails 5 聊天示例部署到 AWS 上的单个自包含 EC2 实例。代码可在此处获得:https ://github.com/HectorPerez/chat-in-rails5

我们使用 Elastic Beanstalk 来启动单个实例,因此:

这是一个最小的安装,所以没有 Elasticache,也没有负载均衡器。为了在 EC2 实例上安装 redis,我们添加了一个 .ebextensions 配置文件,如下所示:https://gist.github.com/KeithP/08b38189372b7fd241e5#file-ebextensions-redis-config;Git 提交和部署。

但是 websocket 不起作用:检查浏览器控制台,我们看到这个错误一遍又一遍地重复:

在此处输入图像描述

服务器 production.log 为每个“Finished /cable”调用显示 2 个“Started GET /cable”。ActiveCable 没有 DEBUG 消息:

0 投票
1 回答
1588 浏览

websocket - 无法使用 wscat 连接到 Ruby on Rails 5 Beta 上的 ActionCable WebSocket

我运行了 Rails 5 Beta 附带的 ActionCable 聊天室示例。Web 应用程序运行良好,数据在 WebSocket 上上下流动。

但是,当我尝试wscat从命令行直接使用连接到 WebSocket 时,出现连接错误。

wscat连接尝试:

错误响应:

起初,我认为 Rails 伪造保护禁止了连接。所以我将以下内容添加到config/environments/development.rb

但是,我遇到了同样的连接错误。

我尝试使用wsd命令行工具连接到 ActionCable WebSocket。wsd更糟糕的是,它因内核恐慌而崩溃。

我还对其他 WebSocket 进行了测试wscatwsd包括 WebSocket Echo Test http://www.websocket.org/echo.html,它们运行良好。

我难住了。有什么建议么?

0 投票
1 回答
9657 浏览

nginx - 带有 puma 的 Rails 5 ActionCable 的 NGINX 配置

我将 Jelastic 用于我的开发环境(尚未投入生产)。我的应用程序使用 Unicorn 运行,但我发现了带有 ActionCable 的 websockets 并将其集成到我的应用程序中。

在本地一切正常,但是在部署到我的 Jelastic 环境(使用默认 NGINX/Unicorn 配置)时,我在我的 javascript 控制台中收到此消息,并且在我的访问日志中看不到任何内容

我曾经在我的本地环境中使用过,我通过在我的配置文件中添加所需的 ActionCable.server.config.allowed_request_origins 来解决它。所以我仔细检查了我的开发配置,没关系。

这就是为什么我想知道是否有针对 NGINX 配置的特定内容,而不是 ActionCable git 页面上解释的内容

对于我的应用程序,我遵循了此处输入链接描述中的所有内容,但没有提及 NGINX 配置

我知道带有 ActionCable 的 websocket 是相当新的,但我希望有人能够在这方面给我一个领导

非常感谢

0 投票
0 回答
611 浏览

ruby-on-rails - 带 nobrainer 的 Rails 5 动作电缆无法正常工作

我尝试了https://github.com/rails/actioncable-examples中的动作电缆示例。它与 ActiveRecord 配合得很好。与 NoBrainer 一起用于 rethinkDB 时,我收到ActiveJob::SerializationError (Unsupported argument type: Comment) 。所以我只是通过 id 而不是 self 如下所示的 activejob。但是动作有线服务器无法收听任何频道,并且不会调用 CommentsChannel 方法。

评论.rb

评论频道.rb

评论.咖啡