- 新增 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
34 lines
1.4 KiB
Go
34 lines
1.4 KiB
Go
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 事件 Handler(Task 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)),
|
||
)
|