考虑以下情况:1)Websocket对连接进行身份验证。defconnectself.current_user=find_verified_userlogger.add_tags"ActionCable","User#{current_user.id}"end2)建立连接后,通知用户connected:->$("body").append("Connected.")3)连接丢失时,通知用户disconnected:->$("pop-up").append("Offline,tryingtoreconnect...")4)当用户注销时.....Anunauthorizedconnectionat
假设对于一个聊天室,我想向用户显示此时有多少用户在线(基本上是有多少人正在观看)。我想到的是为每个actioncablechannel使用一些redis计数器,当客户端连接到channel或断开连接时递增和递减此计数器,然后我们开始了,但是这种方法的问题是如果某些客户端打开一个网页,然后计数器会增加,如果服务器关闭了一段时间,客户端关闭了网页,那么断开连接的事件将不会被监听,所以计数器不会减少并且它的值永远是错误的。我认为如果我可以在服务器关闭时捕获事件以便将所有此类redis计数器设置为零,则可以增强此方法,但不确定如何捕获此类事件(我将nginx与passenger一起使用)。那么
我正在为我们的Rails应用程序构建一个通知中继,但在返回事件channel时遇到了困难。我读过其他问题,指出使用Redis.new.pubsub("channels","action_cable/*")将返回发布/订阅channel,但我总是收到一个空数组。我一直在使用redis-climonitor来查看是否存在通信并且Rails应用程序中的所有内容都工作正常,我只是无法返回事件的发布/订阅channel。我在开发模式下工作并更新了我的cable.yml文件如下:default:&defaultadapter:redisurl:redis://localhost:6379/1dev
我的登台服务器上的Passenger(v6.0.0)和Action_cable实时通知器有一些问题:当我执行一些链接到action_cable的操作时,出现一些新的乘客进程(fork...)和我的内存消耗增加并且不要回落。我的路线配置:mountActionCable.server=>'/user_notifs'我的Nginx配置:location/user_notifs{passenger_app_group_namephusion_staging_action_cable;passenger_force_max_concurrent_requests_per_process0;}我
Heroku返回连接到Redis的错误。我将ActionCable用于消息传递网站,它在本地开发中FINE。我正在使用RedisToGo我将其添加到我的production.rb中:config.middleware.useChatActionCableconfig.web_socket_server_url="wss://my-app-name-here.herokuapp.com/cable"config.action_cable.allowed_request_origins=['https://my-app-name-here.herokuapp.com','http://my
我将创建RailsAPI,该API根据ActionCable处理Websocket(首先,在API模式下使用ActionCatccts是个好主意?)。ActionCable对于完整的堆栈导轨应用程序非常有效,但我遇到了API的困难。第一个问题是哪种格式应要求使用ActionCableServer的所有请求。到目前为止,我发现的只是订阅行动:{"command":"subscribe","identifier":"{\"channel\":\"SomeChannel\"}"}别人呢?我能找到任何文件吗?提前致谢看答案我可能会避免为包括非浏览器客户端的API项目使用可动效的语义和内部协议。例如:A
这是我遵循的实现教程:FinallyTryingActionCable这段代码太长了,所以我没有把这段代码放在这个问题中我只是把一些代码放在用户模型中defonline_now?$redis.get("users:online:#{id}").present?endView是:OnlineOffline但总是报错NoMethodError-undefinedmethodget'fornil:NilClassDidyoumean?gem:app/models/user.rb:34:inonline_now?'表示这一行$redis.get("users:online:#{id}").pr
这是我遵循的实现教程:FinallyTryingActionCable这段代码太长了,所以我没有把这段代码放在这个问题中我只是把一些代码放在用户模型中defonline_now?$redis.get("users:online:#{id}").present?endView是:OnlineOffline但总是报错NoMethodError-undefinedmethodget'fornil:NilClassDidyoumean?gem:app/models/user.rb:34:inonline_now?'表示这一行$redis.get("users:online:#{id}").pr
所以我一直在关注DHH的教程,以实现一个基本的聊天室。在我尝试集成ActiveJob组件之前,该实现对我来说已经足够好了。我在rails或sidekiq控制台中没有看到任何错误消息。但是_message部分没有被渲染。当我在ActiveJob方法中放置一个binding.pry时,所有元素看起来都很好,所以我猜这与作业执行有关?为了进一步支持这种怀疑,当我调用ActionCable.server.broadcast('room_channel',message:data['message'])在room_channel.rb中它工作得很好!我在这上面花了几个小时,但无法弄清楚如何进一步
所以我一直在关注DHH的教程,以实现一个基本的聊天室。在我尝试集成ActiveJob组件之前,该实现对我来说已经足够好了。我在rails或sidekiq控制台中没有看到任何错误消息。但是_message部分没有被渲染。当我在ActiveJob方法中放置一个binding.pry时,所有元素看起来都很好,所以我猜这与作业执行有关?为了进一步支持这种怀疑,当我调用ActionCable.server.broadcast('room_channel',message:data['message'])在room_channel.rb中它工作得很好!我在这上面花了几个小时,但无法弄清楚如何进一步