Tag: actioncable

从iOS应用程序连接到ActionCable

我整天都被困在这一天。 我有David Heinemeier Hansson非常简单的ActionCable示例应用程序(聊天应用程序)正常工作( https://www.youtube.com/watch?v=n0WUjGkDFS0 )。 我试图用iPhone应用程序点击websocket连接。 当我连接到ws://localhost:3000/cable时,我能够收到ping,但我不太确定如何从javascript上下文之外订阅频道。

正在使用Rails 5 ActionCable

我正在玩新的ActionCablefunction。 有没有办法使用say socket.io或使用React或ReactNative从应用程序与ActionCable服务器通信? 也许我对ActionCable的正确使用感到困惑,它并不打算用作代替API的替代品,而是用作同一应用程序的支持前端技术。 如果可能的话,任何使用ActionCable作为独立WS服务器的好例子或指南都将受到赞赏。

来自控制台的ActionCable.server.broadcast

我可以在控制器中使用以下代码,但不能在控制台中使用(两个开发环境)。 我正在使用Rails 5.0.0.beta2。 ActionCable.server.broadcast ‘example_channel’, message: ‘Test’ 控制台: >> ActionCable.server.broadcast ‘example_channel’, message: ‘Test’ [ActionCable] Broadcasting to example_channel: {:message=>”Test”} => [] 我怎样才能在控制台中使用它?

如何使用devise_token_auth和ActionCable来validation用户?

我有一个带有devise_token_auth gem身份validation的Rails 5 API。 现在我想要经过身份validation的用户进行个人聊天 我没有资产,因为我正在使用API​​,而前端是在本机应用程序中,我希望本机应用程序消息传递。 所以我如何使用devise_token_auth gemvalidation用户使用动作电缆进行个人消息传递

ActionCable – 如何显示已连接用户的数量?

我正在尝试使用Action Cable创建一个简单的类似聊天的应用程序(计划扑克应用程序)。 我对术语,文件层次结构以及回调如何工作有点困惑。 这是创建用户会话的操作: class SessionsController < ApplicationController def create cookies.signed[:username] = params[:session][:username] redirect_to votes_path end end 然后,用户可以发布应该向所有人广播的投票: class VotesController < ApplicationController def create ActionCable.server.broadcast 'poker', vote: params[:vote][:body], username: cookies.signed[:username] head :ok end end 到目前为止,一切都很清楚,并且工作正常。 问题是 – 如何显示已连接用户的数量? 当用户(消费者?)连接时,JS中是否会触发回调? 我想要的是当我在隐身模式下在3个不同浏览器中打开3个标签时,我想显示“3”。 当新用户连接时,我希望该数字递增。 如果任何用户断开连接,则该号码应减少。 我的PokerChannel : class PokerChannel < ApplicationCable::Channel def subscribed stream_from 'poker' end end app/assets/javascripts/poker.coffee […]

如何使用ActionCable作为API

我使用Rails 5 beta 1和ActionCable构建了一个非常简单的应用程序,以显示用户何时联机并让他们相互发送消息。 现在,我基本上想采取ActionCable的客户端部分,在另一个应用程序( 不在 Rails 5上运行)的上下文中实现它并将其与第一个应用程序连接以发送和接收数据(例如在线)用户或消息的状态)。 为了从第二个应用程序发送数据,我认为,我可以简单地发出一个AJAX POST请求。 问题是: 如何从我的第二个应用程序订阅第一个应用程序的开放连接? 甚至:我如何通过API从另一个应用程序订阅我的Rails应用程序的ActionCable连接? 我的猜测是,我基本上想在我的第二个应用程序中以某种方式包含这个coffeescript: App.appearance = App.cable.subscriptions.create “AppearanceChannel”, connected: -> # Called when the subscription is ready for use on the server disconnected: -> # Called when the subscription has been terminated by the server received: (data) -> # …

使用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]错误 – :有一个exception – Gem :: LoadError(为Action Cable pubsub适配器指定’redis’,但没有加载gem ‘redis’ 。添加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:在`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′ 有任何想法吗? 谢谢!

Rails中的用户会话认证5

我正在尝试使用Rails 5中的操作电缆实现通知。 阅读Action电缆教程后,该电缆在会话和基于Cookie的身份validation上工作,以接收当前登录用户的通知。 module ApplicationCable class Connection < ActionCable::Connection::Base identified_by :current_user def connect self.current_user = find_verified_user logger.add_tags 'ActionCable', current_user.username end protected def find_verified_user if verified_user = env['warden'].session(:user) verified_user else reject_unauthorized_connection end end end 在find_verified_user中,我无法从会话中获取用户对象。 任何人都可以帮助我,在行动电缆中validation用户。

如何在ActionCable中发送WebSocket请求的状态

有没有办法在ActionCable频道中向客户端发送请求状态? 例如,如果发送的数据无效(或者引发了一些未知exception),我想在响应消息中出错文本,否则发送’status:ok’。 我现在在客户端有的是subscriber的perform方法,几乎​​在任何情况下都能返回true ,我们可以从源代码( github )看到: send: (data) -> if @isOpen() @webSocket.send(JSON.stringify(data)) true else false 在websocket-rails gem中有以下方法: trigger_failure和trigger_success 。

如何向rails / actioncable中除发件人之外的所有客户端发送消息?

在socket.io中,您可以向除发件人之外的所有客户端发送消息,例如: socket.broadcast.emit(‘user connected’); 但在rails / actioncable中,怎么做? class BoardChannel < ApplicationCable::Channel def subscribed stream_from "board:#{params[:board]}" end def speak # client will call @perform('speak') result = do_something() # how to send 'result' to all client except sender? end end