@@ -44,13 +44,26 @@ <h2>Publish Sample (TS v2)</h2>
4444 < input id ="dcText " placeholder ="message " />
4545 < button id ="sendText " disabled > Send Text</ button >
4646 < button id ="sendBin " disabled > Send 128KB Binary</ button >
47+ < label style ="margin-left:12px "> < input type ="checkbox " id ="sanitize " /> Sanitize Strings</ label >
4748 </ fieldset >
4849 </ div >
4950 < div style ="margin-top:12px; ">
5051 < fieldset >
5152 < legend > Screen Share</ legend >
5253 < button id ="startShare "> Start Share</ button >
5354 < button id ="stopShare " disabled > Stop Share</ button >
55+ < button id ="startOverlay "> Start Share + Camera Overlay</ button >
56+ < button id ="stopOverlay " disabled > Stop Overlay</ button >
57+ </ fieldset >
58+ </ div >
59+ < div style ="margin-top:12px; ">
60+ < fieldset >
61+ < legend > Audio</ legend >
62+ < label > Volume:</ label >
63+ < input id ="volume " type ="range " min ="0 " max ="1 " step ="0.01 " value ="1 " />
64+ < button id ="meterOn "> Enable Level Meter</ button >
65+ < button id ="meterOff "> Disable Level Meter</ button >
66+ < span id ="level "> level: 0.00</ span >
5467 </ fieldset >
5568 </ div >
5669 < div style ="margin-top:12px; ">
@@ -77,12 +90,19 @@ <h2>Publish Sample (TS v2)</h2>
7790 const dcText = document . getElementById ( 'dcText' ) ;
7891 const sendTextBtn = document . getElementById ( 'sendText' ) ;
7992 const sendBinBtn = document . getElementById ( 'sendBin' ) ;
93+ const sanitizeCb = document . getElementById ( 'sanitize' ) ;
8094 const statsEl = document . getElementById ( 'stats' ) ;
8195 const enableStatsBtn = document . getElementById ( 'enableStats' ) ;
8296 const startShareBtn = document . getElementById ( 'startShare' ) ;
8397 const stopShareBtn = document . getElementById ( 'stopShare' ) ;
98+ const startOverlayBtn = document . getElementById ( 'startOverlay' ) ;
99+ const stopOverlayBtn = document . getElementById ( 'stopOverlay' ) ;
84100 const turnOffCamBtn = document . getElementById ( 'turnOffCam' ) ;
85101 const turnOnCamBtn = document . getElementById ( 'turnOnCam' ) ;
102+ const vol = document . getElementById ( 'volume' ) ;
103+ const meterOn = document . getElementById ( 'meterOn' ) ;
104+ const meterOff = document . getElementById ( 'meterOff' ) ;
105+ const level = document . getElementById ( 'level' ) ;
86106
87107 function log ( msg ) {
88108 logEl . textContent += msg + '\n' ;
@@ -116,6 +136,7 @@ <h2>Publish Sample (TS v2)</h2>
116136 if ( typeof data === 'string' ) log ( 'dc <- ' + data ) ;
117137 else log ( 'dc <- binary ' + ( data . byteLength || 0 ) + ' bytes' ) ;
118138 } ) ;
139+ sanitizeCb . onchange = ( ) => adaptor . setSanitizeDataChannelStrings ( sanitizeCb . checked ) ;
119140 adaptor . on ( 'updated_stats' , ( ps ) => {
120141 statsEl . textContent = `bytesSent=${ ps . totalBytesSent } bytesRecv=${ ps . totalBytesReceived } ` ;
121142 } ) ;
@@ -179,6 +200,23 @@ <h2>Publish Sample (TS v2)</h2>
179200 } catch ( e ) { log ( 'stop share failed: ' + e . message ) ; }
180201 } ;
181202
203+ startOverlayBtn . onclick = async ( ) => {
204+ try {
205+ await adaptor . startScreenWithCameraOverlay ( ) ;
206+ startOverlayBtn . disabled = true ;
207+ stopOverlayBtn . disabled = false ;
208+ log ( 'overlay started' ) ;
209+ } catch ( e ) { log ( 'start overlay failed: ' + e . message ) ; }
210+ } ;
211+ stopOverlayBtn . onclick = async ( ) => {
212+ try {
213+ await adaptor . stopScreenWithCameraOverlay ( ) ;
214+ startOverlayBtn . disabled = false ;
215+ stopOverlayBtn . disabled = true ;
216+ log ( 'overlay stopped' ) ;
217+ } catch ( e ) { log ( 'stop overlay failed: ' + e . message ) ; }
218+ } ;
219+
182220 turnOffCamBtn . onclick = ( ) => {
183221 adaptor . turnOffLocalCamera ( ) ;
184222 log ( 'camera turned off' ) ;
@@ -187,6 +225,19 @@ <h2>Publish Sample (TS v2)</h2>
187225 adaptor . turnOnLocalCamera ( ) ;
188226 log ( 'camera turned on' ) ;
189227 } ;
228+
229+ vol . oninput = ( ) => {
230+ adaptor . setVolumeLevel ( parseFloat ( vol . value ) ) ;
231+ } ;
232+ meterOn . onclick = async ( ) => {
233+ await adaptor . enableAudioLevelForLocalStream ( ( v ) => {
234+ level . textContent = 'level: ' + v . toFixed ( 2 ) ;
235+ } , 200 ) ;
236+ } ;
237+ meterOff . onclick = ( ) => {
238+ adaptor . disableAudioLevelForLocalStream ( ) ;
239+ level . textContent = 'level: 0.00' ;
240+ } ;
190241 </ script >
191242 </ body >
192243</ html >
0 commit comments