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): arrayChannelManager
频道管理服务 - 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