Skip to Content
🚀 Drubase One v1.1 - 基于 Drupal 11 的多租户后端即服务平台
Docs模块BaaS Realtime

BaaS Realtime 模块

实时通信模块 - WebSocket 消息推送和频道订阅。

📦 模块信息

  • 依赖: Node.js Functions Service
  • 位置: web/modules/custom/baas_realtime/

🏗️ 核心功能

WebSocket 通信

  • 持久化连接
  • 双向消息传输
  • 自动重连机制

频道订阅

  • 项目级频道
  • 用户级频道
  • 自定义频道

🔧 主要类和方法

RealtimeService

实时服务管理 - src/Service/RealtimeService.php

// 发送消息到频道 public function sendMessage(string $channel, array $data): bool // 订阅频道 public function subscribe(string $channel, int $user_id): bool // 取消订阅 public function unsubscribe(string $channel, int $user_id): bool // 获取频道订阅者 public function getChannelSubscribers(string $channel): array

ChannelManager

频道管理服务 - src/Service/ChannelManager.php

// 创建频道 public function createChannel(string $channel_name, string $project_id): bool // 删除频道 public function deleteChannel(string $channel_name): bool // 获取项目频道 public function getProjectChannels(string $project_id): array

📖 使用示例

前端订阅

const ws = new WebSocket('ws://YOUR_HOST:4000'); ws.onopen = () => { ws.send(JSON.stringify({ action: 'subscribe', channel: 'project_updates', project_id: 'tenant_7375b0cd_project_6888d012be80c' })); }; ws.onmessage = (event) => { const data = JSON.parse(event.data); console.log('收到消息:', data); };

后端推送

$realtime_service = \Drupal::service('baas_realtime.service'); $realtime_service->sendMessage('project_updates', [ 'type' => 'entity_updated', 'entity_name' => 'users', 'entity_id' => 123, ]);

🔌 服务注册

baas_realtime.services.yml:

services: baas_realtime.service: class: Drupal\baas_realtime\Service\RealtimeService arguments: - '@http_client' - '@config.factory' baas_realtime.channel_manager: class: Drupal\baas_realtime\Service\ChannelManager arguments: - '@database'

🔗 相关文档

Last updated on