File size: 1,504 Bytes
00a912e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import { registerRoomController } from './roomController.js'
import { registerPlayerController } from './playerController.js'
import { registerQueueController } from './queueController.js'
import { registerChatController } from './chatController.js'
import { registerVoteController } from './voteController.js'
import { registerAuthController } from './authController.js'
import { registerPlaylistController } from './playlistController.js'
import { logger } from '../utils/logger.js'
import type { TypedServer } from '../middleware/types.js'
import { EVENTS } from '@music-together/shared'
import { audioProxyPolicyRepo } from '../repositories/audioProxyPolicyRepository.js'
import { globalBackgroundRepo } from '../repositories/globalBackgroundRepository.js'

export function initializeSocket(io: TypedServer) {
  io.on('connection', (socket) => {
    logger.debug('客户端已连接', { socketId: socket.id })

    // 新连接默认加入 lobby 频道(首页房间列表推送)
    socket.join('lobby')
    socket.emit(EVENTS.SERVER_AUDIO_PROXY_POLICY, audioProxyPolicyRepo.get())
    socket.emit(EVENTS.SERVER_GLOBAL_BACKGROUND, globalBackgroundRepo.get())

    registerRoomController(io, socket)
    registerPlayerController(io, socket)
    registerQueueController(io, socket)
    registerChatController(io, socket)
    registerVoteController(io, socket)
    registerAuthController(io, socket)
    registerPlaylistController(io, socket)
  })

  logger.info('实时通信服务已初始化')
}