feat: enhance collaboration session and LiveKit integration
- Added LiveKitRoomService to manage meeting room creation and recording functionalities. - Updated CollaborationSessionSchema to create a LiveKit room upon new collaboration session creation. - Introduced meetingRoomJoinInfo field in MeetingRoomSchema to provide join tokens and server URLs for meeting rooms. - Improved LiveKitService to include user metadata in token generation and added a method to retrieve the server URL. - Enhanced error handling and authorization checks across schemas to ensure proper access control for collaboration sessions and meeting rooms.
This commit is contained in:
@@ -1,16 +1,24 @@
|
||||
import { forwardRef, Injectable } from '@nestjs/common'
|
||||
import { Injectable } from '@nestjs/common'
|
||||
// @ts-expect-error
|
||||
import { Room, RoomServiceClient } from 'livekit-server-sdk'
|
||||
import { LiveKitEgressService } from './livekit.egress'
|
||||
|
||||
@Injectable()
|
||||
export class LiveKitRoomService {
|
||||
constructor(private readonly roomServiceClient: RoomServiceClient) {}
|
||||
private readonly roomServiceClient = new RoomServiceClient(
|
||||
process.env.LIVEKIT_URL as string,
|
||||
process.env.LIVEKIT_API_KEY as string,
|
||||
process.env.LIVEKIT_API_SECRET as string,
|
||||
)
|
||||
constructor(private readonly egressService: LiveKitEgressService) {}
|
||||
|
||||
async createServiceMeetingRoom(roomId: string) {
|
||||
const room = await this.roomServiceClient.createRoom({
|
||||
name: roomId,
|
||||
maxParticipants: 2,
|
||||
})
|
||||
// start recording
|
||||
await this.egressService.startRecording(roomId)
|
||||
return room
|
||||
}
|
||||
|
||||
@@ -22,5 +30,3 @@ export class LiveKitRoomService {
|
||||
return room
|
||||
}
|
||||
}
|
||||
|
||||
export const roomServiceClient = forwardRef(() => LiveKitRoomService)
|
||||
|
||||
Reference in New Issue
Block a user