Files
EchoChat/backend/go-service/app/meeting/provider.go
bujinyuan 55d6352c6a feat(phase2e-2): 落地 HTTPMediaOrchestrator 打通 Go↔Node 媒体链路(Task 7)
- 新增 MediaServerConfig + config.{dev,docker}.yaml 的 media_server 段
  (base_url / internal_token / timeout_ms / close_timeout_ms / close_retry)
- 新建 HTTPMediaOrchestrator(8 方法 + sync.Map 缓存 roomCode→routerID
  + 关闭类指数退避重试 200/500ms + ErrMediaResourceNotFound/ErrMediaServerError
  两类错误)实现 MediaOrchestrator 接口
- wire 绑定由 NoopMediaOrchestrator 切换到 HTTPMediaOrchestrator;
  MeetingService / MeetingSignalService 调用侧零改动
- E2E 脚本 docs/verify/meeting_t7_verify.mjs 证明 16/16 PASS:
  健康检查/错token 401/REST 创房加入/WS room.join/真实 mediasoup
  transport.create(ICE/DTLS 指纹均由 Node 返回非占位)/404 幂等关 producer
  /host 结束会议触发 CloseRouter
- 同步更新 13 份文档:CURRENT_STATUS / implementation.plan / design
  变更记录 / project-context / api 导览 / api websocket / api frontend meeting
  / system-architecture / media-server README / 顶层 README 等
- go build ./... 全绿

Made-with: Cursor
2026-04-21 17:47:11 +08:00

34 lines
1.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package meeting
import (
"github.com/echochat/backend/app/meeting/controller"
"github.com/echochat/backend/app/meeting/dao"
"github.com/echochat/backend/app/meeting/service"
"github.com/google/wire"
)
// MeetingSet 会议模块 Wire Provider Set
// 对外暴露:
// - *service.MeetingService —— REST 业务服务Task 5
// - *service.MeetingBroadcaster —— WS 广播中枢Task 6 新增,供 SignalService 复用)
// - *service.MeetingSignalService —— WS 信令事件业务逻辑Task 6
// - *controller.MeetingController —— REST API 控制器
// - *controller.MeetingWSHandler —— WS 事件 HandlerTask 6启动时自动注册到 Hub
// 依赖的接口 NotifyPusher / UserInfoResolver / OnlineChecker 由上游 wire.Bind 绑定具体实现
var MeetingSet = wire.NewSet(
dao.NewMeetingRoomDAO,
dao.NewMeetingParticipantDAO,
dao.NewMeetingChatDAO,
service.NewMeetingBroadcaster,
service.NewMeetingService,
service.NewMeetingSignalService,
controller.NewMeetingController,
controller.NewMeetingWSHandler,
// MediaOrchestrator 使用真实 HTTP 实现Task 7 落地)
// 注入 *config.Config通过 cfg.MediaServer 获取 base_url / internal_token / timeout 等配置
// 如需回退到本地 stub 调试,可临时改为 service.NewNoopMediaOrchestrator 并调整 wire.Bind
service.NewHTTPMediaOrchestrator,
wire.Bind(new(service.MediaOrchestrator), new(*service.HTTPMediaOrchestrator)),
)