1+ const joinBtn = document . getElementById ( "join-btn" ) ;
2+ const leaveBtn = document . getElementById ( "leave-btn" ) ;
3+ const publishBtn = document . getElementById ( "publish-btn" ) ;
4+ const publishSBtn = document . getElementById ( "publish-simulcast-btn" ) ;
5+
16const localVideo = document . getElementById ( "local-video" ) ;
27const remoteVideo = document . getElementById ( "remote-video" ) ;
38const localData = document . getElementById ( "local-data" ) ;
@@ -6,16 +11,17 @@ const sizeTag = document.getElementById("size-tag");
611const brTag = document . getElementById ( "br-tag" ) ;
712const codecBox = document . getElementById ( "select-box1" ) ;
813const resolutionBox = document . getElementById ( "select-box2" ) ;
14+
915let simulcast = false ;
1016let localDataChannel ;
1117
1218let url = 'http://localhost:5551' ;
1319let sid = 'ion' ;
14- let uid = "echo-example " ;
15-
20+ let uid = "local-user " ;
21+ let connector ;
1622let room ;
17- const joinRoom = async ( ) => {
18- console . log ( "[joinRoom ]: sid=" + sid + " uid=" , uid )
23+ const join = async ( ) => {
24+ console . log ( "[join ]: sid=" + sid + " uid=" , uid )
1925 const connector = new Ion . Connector ( url , "token" ) ;
2026
2127 connector . onopen = function ( service ) {
@@ -26,7 +32,6 @@ const joinRoom = async () => {
2632 console . log ( '[onclose]: service = ' + service . name ) ;
2733 } ;
2834
29-
3035 room = new Ion . Room ( connector ) ;
3136
3237 room . onjoin = function ( result ) {
@@ -75,7 +80,6 @@ const joinRoom = async () => {
7580 console . log ( '[ondisconnect]: Disconnected from server ' + dis ) ;
7681 } ;
7782
78- //room.connect();
7983 const result = await room . join ( {
8084 sid : sid ,
8185 uid : uid ,
@@ -89,7 +93,12 @@ const joinRoom = async () => {
8993 vendor : 'string' ,
9094 } , '' )
9195 . then ( ( result ) => {
92- console . log ( '[joinRoom] result: success ' + result ?. success + ', room info: ' + JSON . stringify ( result ?. room ) ) ;
96+ console . log ( '[join] result: success ' + result ?. success + ', room info: ' + JSON . stringify ( result ?. room ) ) ;
97+ joinBtn . disabled = "true" ;
98+ remoteData . innerHTML = remoteData . innerHTML + JSON . stringify ( result ) + '\n' ;
99+ leaveBtn . removeAttribute ( 'disabled' ) ;
100+ publishBtn . removeAttribute ( 'disabled' ) ;
101+ publishSBtn . removeAttribute ( 'disabled' ) ;
93102 } ) ;
94103
95104
@@ -104,14 +113,19 @@ const sendMsg = () => {
104113 }
105114 const payload = new Map ( ) ;
106115 payload . set ( 'msg' , localData . value ) ;
107- console . log ( "[sendMsg]: sid=" , sid , "from=" , 'sender' , "to=" , uid , "payload=" , payload ) ;
108- room . message ( sid , ' sender' , uid , 'Map' , payload ) ;
116+ console . log ( "[sendMsg]: sid=" , sid , "from=" , uid , "to=" , "all" , "payload=" , payload ) ;
117+ room . message ( sid , " sender" , "all" , 'Map' , payload ) ;
109118}
110119
111120
112- const leaveRoom = ( ) => {
113- console . log ( "[leaveRoom ]: sid=" + sid + " uid=" , uid )
121+ const leave = ( ) => {
122+ console . log ( "[leave ]: sid=" + sid + " uid=" , uid )
114123 room . leave ( sid , uid ) ;
124+ joinBtn . removeAttribute ( 'disabled' ) ;
125+ leaveBtn . disabled = "true" ;
126+ publishBtn . disabled = "true" ;
127+ publishSBtn . disabled = "true" ;
128+ location . reload ( ) ;
115129}
116130
117131remoteVideo . addEventListener ( "loadedmetadata" , function ( ) {
@@ -122,8 +136,7 @@ remoteVideo.onresize = function () {
122136 sizeTag . innerHTML = `${ remoteVideo . videoWidth } x${ remoteVideo . videoHeight } ` ;
123137} ;
124138
125- /* eslint-env browser */
126- const joinBtns = document . getElementById ( "start-btns" ) ;
139+
127140
128141const local = new Ion . Connector ( url ) ;
129142const remote = new Ion . Connector ( url ) ;
@@ -138,12 +151,15 @@ local.onclose = function (service, err) {
138151
139152const localRTC = new Ion . RTC ( local ) ;
140153const remoteRTC = new Ion . RTC ( remote ) ;
154+ let trackEvent ;
141155
142156localRTC . join ( sid , uid ) ;
143157
144158remoteRTC . ontrackevent = function ( ev ) {
145159 console . log ( "[ontrackevent]: \nuid = " , ev . uid , " \nstate = " , ev . state , ", \ntracks = " , JSON . stringify ( ev . tracks ) ) ;
146- event = ev ;
160+ if ( ! trackEvent ) {
161+ trackEvent = ev ;
162+ }
147163 remoteData . innerHTML = remoteData . innerHTML + JSON . stringify ( ev ) + '\n' ;
148164} ;
149165
@@ -154,11 +170,15 @@ remoteRTC.ondatachannel = ({ channel }) => {
154170 } ;
155171} ;
156172
157- remoteRTC . join ( sid , "echo- remote" ) ;
173+ remoteRTC . join ( sid , "remote-user " ) ;
158174
159175let localStream ;
160176const start = ( sc ) => {
161177 simulcast = sc ;
178+
179+ publishSBtn . disabled = "true" ;
180+ publishBtn . disabled = "true" ;
181+
162182 Ion . LocalStream . getUserMedia ( {
163183 resolution : resolutionBox . options [ resolutionBox . selectedIndex ] . value ,
164184 codec :codecBox . options [ codecBox . selectedIndex ] . value ,
@@ -171,7 +191,7 @@ const start = (sc) => {
171191 localVideo . autoplay = true ;
172192 localVideo . controls = true ;
173193 localVideo . muted = true ;
174- joinBtns . style . display = "none" ;
194+ // joinBtns.style.display = "none";
175195 localRTC . publish ( media ) ;
176196 localDataChannel = localRTC . createDataChannel ( "data" ) ;
177197 } )
0 commit comments