生产环境ActionCable订阅报错:mode not supported for this object: r
ActionCable生产环境订阅触发ArgumentError错误
错误详情
生产环境中ActionCable订阅触发如下错误:
/home/[app]/.rbenv/versions/jruby-9.4.1.0/lib/ruby/gems/shared/gems/actioncable-6.1.6.1/lib/action_cable/connection/stream_event_loop.rb:74 ArgumentError: mode not supported for this object: r register at org/nio4r/Selector.java:122
环境差异与已排查点
- 该功能在开发环境及本地生产环境均可正常运行,但外部生产服务器要求必须配置
identified_by :current_user - 已排除importmaps影响:直接引入actioncable.js作为普通JS文件使用,在开发和本地生产环境均有效
- 日志表现差异:
- 开发环境:
application_cable/connect.rb执行完毕后,会生成Registered connection (Z2lkOi8vcmVjbHVlL1VzZXIvMQ)日志,且ApplicationCable Channel类会被调用 - 生产环境:仅在
application_cable/connect.rb执行完毕时有日志,无上述注册连接日志,且Channel类未被调用
- 开发环境:
Redis监控对比
本地环境Redis命令记录
1741170206.642863 [1 127.0.0.1:60792] "select" "1" 1741170206.645384 [1 127.0.0.1:60792] "client" "setname" "ActionCable-PID-205601" 1741170206.646141 [1 127.0.0.1:60792] "subscribe" "_action_cable_internal" 1741170206.647203 [1 127.0.0.1:60792] "subscribe" "[app]_development:action_cable/Z2lkOi8vcmVjbHVlL1VzZXIvMw" 1741170206.648451 [1 127.0.0.1:60792] "subscribe" "[app]_development:messages_channel_3"
生产环境Redis命令记录(缺失最后一条频道订阅)
1741168655.771025 [1 127.0.0.1:34326] "SELECT" "1" 1741168655.771083 [1 127.0.0.1:34326] "CLIENT" "SETNAME" "ActionCable-PID-20413" 1741168655.772064 [1 127.0.0.1:34326] "subscribe" "_action_cable_internal" 1741168655.772582 [1 127.0.0.1:34326] "subscribe" "[app]_production:action_cable/Z2lkOi8vcmVjbHVlL1VzZXIvMQ
问题
后续MessagesChannel的subscribed方法从未被调用。请问mode not supported for this object: r中的:r指的是什么?求排查线索。
内容的提问来源于stack exchange,提问作者Theores
相关产品推荐
相关产品推荐

