用途:在 Rails 应用中实现实时 WebSocket 功能,包括频道、订阅、广播与 Solid Cable 适配器配置。
主要能力:判断 Action Cable 与 Turbo Streams 的取舍;连接认证(Cookie、Devise、Token);创建频道与订阅;stream_from 与 stream_for 两种流类型;服务端与客户端广播;适配器配置(Solid Cable、Redis、PostgreSQL);生产环境配置;断线清理;频道测试。
使用方式:先检查 config/cable.yml 与 app/channels 现有配置;用 bin/rails generate channel Chat 生成服务端与客户端文件;在 Connection 中实现 connect 并调用 reject_unauthorized_connection;在频道 subscribed 中建立流,客户端用 consumer.subscriptions.create 订阅并实现 connected、disconnected、received 回调;通过 ActionCable.server.broadcast 或 MyChannel.broadcast_to 广播;生产环境设置 allowed_request_origins 并添加 action_cable_meta_tag。
适用场景:聊天、通知、在线状态、输入指示、实时仪表盘、进度跟踪、双向通信、非 HTML 载荷。
限制与注意:仅需模型变更广播并更新 DOM 时应优先用 Turbo Streams;必须认证连接;避免广播整个模型;在 unsubscribed 中清理状态;生产环境不要用 async 适配器;流名称中避免直接拼接用户输入;客户端需处理 disconnected 状态。具体版本与部署细节以官方文档为准。