Tag: actioncable

动作电缆在本地订阅,但不在heroku上订阅

我一直在尝试在网上找到的所有东西,但没有任何工作。 希望一些新鲜的眼睛会看到这个问题。 这是我第一次使用ActionCable,一切都在本地很好用,但是在推送到heroku时。 我的日志不显示任何actioncable订阅,如我的开发服务器: [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在哪里作为开发人员在localhost:3000监听。 我应该以某种方式指向我的heroku app吗? 以下是相关的配置文件: Procfile: web: bundle exec puma -p 5000 ./config.ru actioncable: bundle exec puma -p 28080 cable/config.ru redis: redis-server ***感谢下面的评论,我也在努力。 仍然没有工作,但我可以看到它正在收听的端口正在发生变化,让我相信它与配置有关? : web: bundle exec puma -p $PORT ./config.ru actioncable: bundle exec puma -p $PORT cable/config.ru […]

如何从控制器或模型调用ActionCable方法 – “未初始化的常量QuizSession :: App”错误

我正在尝试使用带有2个用户的Ruby on Rails编写一个简单的测验应用程序,他们可以看到不同的视图: 测验主持人视图显示当前问题和“下一个问题” – 按钮(他应该为观众投射到墙上)和 参与者视图显示4个按钮,其中包含与当前问题相对应的答案选项(因此,受众可以通过智能手机参与测验)。 我就是这样,我正在尝试使用ActionCable将这4个答案按钮广播到我的频道,但是当我尝试调用我在频道中定义的方法时,我得到错误”uninitialized constant QuizSession::App” 。 这些是我为启用ActionCable而采取的步骤: 1)我在/app/channels/quiz_data_channel.rb中生成了一个新频道: class QuizDataChannel # Called when the subscription is ready for use on the server disconnected: -> # Called when the subscription has been terminated by the server received: (data) -> # Called when there’s incoming data on the websocket for this channel […]

ActionCable:为什么要把广播放在一个单独的工作中? 对于表格,为什么不从控制器广播?

大多数教程都是一年前推出的示例应用程序DHH略有改动的版本。 他们中的大多数人都有将广播转移到工作岗位的习惯。 但是A)这不是Redis的观点吗? B)因为我正在使用Delayed :: Job不会直接播放更快吗? 在创建模型或通过ActionCable提交表单时,它似乎没有CSRF保护。 积极限制起源是否消除了对protect_from_forgery的需求? gem的自述文件有一个指向教程的链接,该教程添加了一个签名的cookie,我在warden[‘env’].user看到了另一个finds_verified_user教程。 这是否解决了protect_from_forgery解决的问题? 如果没有:我以为我可以像往常一样将表单提交给控制器,然后直接从控制器向所有订阅用户广播?但是因为它看起来很简单但我没有看到任何地方我担心有什么原因。 在那儿?

在capybara-webkitfunction规范期间,ActionCable无法连接

我使用Capybara-webkit在function规范中使用actioncable时遇到问题。 Actioncable在我的开发服务器上工作得很好,但是当测试javascript似乎无法连接时。 这是我的function规范期间运行的javascript控制台的输出 WebSocket connection to ‘ws://127.0.0.1:32789/cable’ failed: Unexpected response code: 200 这是我当时test.log的输出 GET “/cable” for 127.0.0.1 at 2017-01-26 13:33:23 +0000 GET “/cable/” for 127.0.0.1 at 2017-01-26 13:33:23 +0000 Successfully upgraded to WebSocket (REQUEST_METHOD: GET, HTTP_CONNECTION: Upgrade, HTTP_UPGRADE: websocket) 它奇怪,因为它似乎根据日志连接正常,但javascript抛出错误并停止执行…另外200如何错误代码? 200状态代码总是意味着OK ? 提前致谢

ActionCable:每个用户一个频道

我正在处理我的rails应用程序的通知。 有User模型和控制器以及与用户关联的Like模型与用户有很多喜欢关联。 这个想法是,如果用户喜欢另一个用户的个人资料,该个人资料的所有者将获得实时通知。 这是我理解ActionCable的应用程序。 我研究过有线电视api ,pub-sub对我很新。 我能够通过单一渠道进行成功的沟通,并成功使用了授权 。 但是,我仍然不明白如何使用每个用户的单个频道(动态生成的频道),以便发布给一个用户的消息不会转发给另一个用户。 动态频道可能吗? 或者,是否有其他方式可以满足所有用户的需求

操作电缆与ip绑定后无法正常工作

我已经在我的系统中实现了rails-5的动作电缆,并且它在localhost ,但是当我尝试用ip绑定时,它会给出以下错误消息。 与’ws://192.168.1.46:3002 / cable’的WebSocket连接失败:WebSocket握手期间出错:意外响应代码:404 并在终端日志中 无法升级到WebSocket(REQUEST_METHOD:GET,HTTP_CONNECTION:Upgrade,HTTP_UPGRADE:websocket) 我已经对我的development.rb进行了更改 config.action_cable.url = “ws://192.168.1.46:3002/cable” 但没有成功。 请指导我错在哪里。 告诉我你是否需要额外的信息,提前致谢。

禁用ActionCable事件的rails日志

在development环境中,rails logger记录所有有时令人讨厌的ActionCable事件(对于我的项目,它不时地传输消息并且日志尾部像野马一样运行)。 什么是从ActionCable中抑制所有事件日志的有效方法? 另外,如何抑制某些特定的ActionCable事件?

在使用Action Cable(Puma端口侦听)的同时将Ruby on Rails应用程序部署到Heroku

我已经在本地主机环境中使用Action Cable,在这种情况下,我使用包含的简单文件启动Puma服务器 # /bin/bash bundle exec puma -p 28080 cable/config.ru 一旦发生这种情况,puma服务器就会启动并正在侦听此28080端口以及运行本地服务器的端口。 通过在线搜索,我找不到一个可以告诉我在heroku上模拟这个方法的地方,或者让我的服务器始终在同一个端口上开始的方式(虽然我不知道这是否会给我所需的结果) 我有一个javascript文件设置来创建与该端口相关的消费者。 //= require cable //= require_self //= require_tree . this.App = {}; App.cable = Cable.createConsumer(‘ws://127.0.0.1:28080′); 我想我需要更改127.0.0.1部分以及部署到heroku也可以工作,但我不确定。 我试图切断28080部分并用ENV [‘PORT’]替换它,但它说它是一个未知的变量,即使我有一个puma.rb文件设置,其端口设置为 … (only part of the file) rackup DefaultRackup port ENV[‘PORT’] || 3000 environment ENV[‘RACK_ENV’] || ‘development’ … 所以在我看来ENV [‘PORT’]被定义为当我检查heroku日志时puma服务器将是 2015-07-26T06:50:25.278030+00:00 heroku[web.1]: Starting process with command […]

如何在ActionCable rails-5-api app中获取current_user?

为什么我无法在通道中检索current_user或如何检索current_user ? 我该用什么? Rails 5.0.1 –api (我没有任何意见NOR使用咖啡) 我使用react-native app来测试这个(没有授权就可以正常工作) 我没有使用devise for auth (我使用JWT而不是使用Knock ,所以没有cookie) 尝试在rubydoc.info中描述的ActionCable通道中获取current_user 代码看起来像 class MessageChannel < ApplicationCable::Channel identified_by :current_user def subscribed stream_from 'message_' + find_current_user_privileges end def unsubscribed # Any cleanup needed when channel is unsubscribed end protected def find_current_user_privileges if current_user.has_role? :admin 'admin' else 'user_' + current_user.id end end end 运行它,我得到这个错误: […]

Capybara没有使用action_cable

我正在使用带有动作电缆的Rails 5 beta 3,这种集成在开发中运行良好,但是当我尝试通过capybara运行function测试时,它似乎没有达到通道操作。 我正在使用Portergeist并将puma配置为capybara的服务器。 我也在使用es5-shim和es6-shim。 有没有其他人经历过这个或知道任何解决方法? 谢谢! 编辑 我正在使用这个水豚分支来配置Capybara中的Puma Capybara.register_server :puma do |app, port, host| require ‘puma’ Puma::Server.new(app).tap do |s| s.add_tcp_listener host, port end.run.join end 我没有在config.action_cable.allowed_request_origins上设置任何内容