用途:Action Cable 是 Rails 中实现实时 WebSocket 通信的指南,用于构建聊天、通知、在线状态、输入提示等实时功能。
主要能力:服务端通过 Connection 类完成连接与用户识别,使用 identified_by 与 cookies.encrypted 验证用户,未通过则 reject_unauthorized_connection。频道继承 ApplicationCable::Channel,在 subscribed 中用 stream_from 或 stream_for 订阅流,可 reject 拒绝订阅,并定义 speak 等动作处理客户端消息。广播可从模型(after_create_commit)、控制器或后台 Job 调用 ActionCable.server.broadcast 或 Channel.broadcast_to 发出,也可配合 Turbo Streams 的 broadcast_append_to、broadcast_replace_to、broadcast_remove_to。客户端使用 @rails/actioncable 的 createConsumer 建立 consumer,通过 subscriptions.create 订阅频道并实现 connected、disconnected、received 回调,用 perform 调用服务端动作,用 unsubscribe 取消订阅。
使用方式:可用 rails generate channel Chat speak 生成频道文件;在 config/routes.rb 中 mount ActionCable.server => "/cable";在 config/cable.yml 配置适配器(开发 async、测试 test、生产 redis 并设置 url 与 channel_prefix);生产环境可配置 allowed_request_origins 限制来源。
常见模式:在线状态跟踪、输入提示、基于房间的聊天,均通过 stream_from/stream_for 与广播实现。
测试:提供 ActionCable::Channel::TestCase、Connection::TestCase 及 assert_broadcast_on 等断言。
限制:资料未提供具体版本要求、性能数据、收费信息或部署细节;生产环境不建议禁用请求伪造保护。