|
469 | 469 | let rtcWs = null; |
470 | 470 | const connectionId = _randomString(); |
471 | 471 | const peerConnections = []; |
472 | | -const _rtcConnect = (userName, channelName) => { |
| 472 | +const _rtcConnect = (type, userName, channelName) => { |
473 | 473 | rtcWs = new WebSocket(`${LAMBDA_URLS.presenceWs}?u=${encodeURIComponent(userName)}&c=${encodeURIComponent(channelName)}`); |
474 | 474 | rtcWs.onopen = () => { |
475 | 475 | // console.log('presence socket open'); |
|
578 | 578 | } else if (method === 'initState') { |
579 | 579 | const {state} = data; |
580 | 580 | const htmlString = parse5.serialize(state); |
581 | | - root.setHTML(htmlString); |
| 581 | + if (type === 'channel') { |
| 582 | + root.setHTML(htmlString); |
| 583 | + } else { |
| 584 | + console.log('load channel', htmlString); |
| 585 | + } |
582 | 586 | } else if (method === 'editState') { |
583 | 587 | const {spec} = data; |
584 | 588 | const {method, keyPath, key, value, values} = spec; |
|
620 | 624 | rtcWs.onclose = () => { |
621 | 625 | clearInterval(pingInterval); |
622 | 626 | console.log('rtc closed'); |
623 | | - // setTimeout(_rtcConnect, 5000); |
624 | 627 | }; |
625 | 628 | rtcWs.onerror = err => { |
626 | 629 | console.warn('rtc error', err); |
627 | 630 | clearInterval(pingInterval); |
628 | | - // setTimeout(_rtcConnect, 5000); |
629 | 631 | }; |
| 632 | + rtcWs.type = type; |
630 | 633 | rtcWs.userName = userName; |
631 | 634 | rtcWs.channelName = channelName; |
632 | 635 | rtcWs.pushScene = () => { |
|
691 | 694 | } |
692 | 695 | case 'joinChannel': { |
693 | 696 | const {userName, channelName} = data; |
694 | | - _rtcConnect(userName, channelName); |
| 697 | + _rtcConnect('channel', loginToken.name, `${userName}/${channelName}`); |
695 | 698 | break; |
696 | 699 | } |
697 | 700 | } |
|
4247 | 4250 | _disconnectLand(); |
4248 | 4251 | const userName = loginToken.name || namegen(2).join('-'); // XXX |
4249 | 4252 | const channelName = namegen(1)[0]; |
4250 | | - _rtcConnect(userName, channelName); |
| 4253 | + _rtcConnect('channel', loginToken.name, `${userName}/${channelName}`); |
4251 | 4254 | if (!channels.some(channel => channel.user === userName && channel.channel === channelName)) { |
4252 | 4255 | channels.push({ |
4253 | 4256 | user: userName, |
|
4258 | 4261 | } else if (id === 'channel-global') { |
4259 | 4262 | _rtcDisconnect(); |
4260 | 4263 | root.innerHTML = ''; |
| 4264 | + |
| 4265 | + _rtcConnect('land', loginToken.name, 'land'); |
| 4266 | + |
4261 | 4267 | const p = _connectLand(); |
4262 | 4268 | _updateTextureDynamic(); |
4263 | 4269 | await p; |
|
4290 | 4296 | const channelName = match[3]; |
4291 | 4297 | if (!match[1]) { |
4292 | 4298 | _rtcDisconnect(); |
4293 | | - _rtcConnect(userName, channelName); |
| 4299 | + _rtcConnect('channel', loginToken.name, `${userName}/${channelName}`); |
4294 | 4300 | _updateTextureDynamic(); |
4295 | 4301 | } else if (match[1] === '-copy-join') { |
4296 | 4302 | const u = new URL(window.location.href); |
|
0 commit comments