11import { WORKSPACE_EVENT } from '@wabinar/constants/socket-message' ;
2+ import env from 'config' ;
23import { Socket } from 'socket.io-client' ;
34
45type onMediaConnectedCb = ( socketId : string , remoteStream : MediaStream ) => void ;
56type onMediaDisconnectedCb = ( socketId : string ) => void ;
67
78class RTC {
8- static BITRATE = 30000 ;
9+ static BITRATE = Number ( env . WEBRTC_VIDEO_BITRATE ) ;
910 private socket : Socket ;
1011 private iceServerUrls : string [ ] ;
1112 private userMediaStream : MediaStream ;
@@ -72,9 +73,13 @@ class RTC {
7273
7374 async #setVideoBitrate( pc : RTCPeerConnection , bitrate : number ) {
7475 // fetch video sender
75- const [ videoSender ] = pc
76+ const videoSender = pc
7677 . getSenders ( )
77- . filter ( ( sender ) => sender ! . track ! . kind === 'video' ) ;
78+ . find ( ( sender ) => sender ! . track ! . kind === 'video' ) ;
79+
80+ if ( ! videoSender ) {
81+ return ;
82+ }
7883
7984 // set bitrate
8085 const params = videoSender . getParameters ( ) ;
@@ -108,6 +113,8 @@ class RTC {
108113 const answer = await pc . createAnswer ( ) ;
109114 await pc . setLocalDescription ( answer ) ;
110115
116+ this . #setVideoBitrate( pc , RTC . BITRATE ) ;
117+
111118 this . socket . emit ( WORKSPACE_EVENT . SEND_ANSWER , answer , remoteSocketId ) ;
112119 } ,
113120 ) ;
@@ -121,6 +128,8 @@ class RTC {
121128 }
122129
123130 await pc . setRemoteDescription ( answer ) ;
131+
132+ this . #setVideoBitrate( pc , RTC . BITRATE ) ;
124133 } ,
125134 ) ;
126135
0 commit comments