Adding connecting spinner and blinking error to webrtc display
I put a connecting spinner around the user name when the user is connecting. Also, if an error occurs, we will see a blinking red circle around the player name.
This commit is contained in:
parent
96c5d92c46
commit
f2c9647882
58
front/dist/resources/style/style.css
vendored
58
front/dist/resources/style/style.css
vendored
@ -149,3 +149,61 @@ video{
|
||||
left: calc(48px - 41px);
|
||||
position: relative;
|
||||
}
|
||||
|
||||
/* Spinner */
|
||||
.connecting-spinner {
|
||||
/*display: inline-block;*/
|
||||
position: absolute;
|
||||
left: calc(50% - 68px);
|
||||
top: calc(50% - 68px);
|
||||
|
||||
|
||||
width: 130px;
|
||||
height: 130px;
|
||||
}
|
||||
.connecting-spinner:after {
|
||||
content: " ";
|
||||
display: block;
|
||||
width: 108px;
|
||||
height: 108px;
|
||||
margin: 8px;
|
||||
border-radius: 50%;
|
||||
border: 6px solid #fff;
|
||||
border-color: #fff transparent #fff transparent;
|
||||
animation: connecting-spinner 1.2s linear infinite;
|
||||
}
|
||||
@keyframes connecting-spinner {
|
||||
0% {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
100% {
|
||||
transform: rotate(360deg);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.rtc-error {
|
||||
position: absolute;
|
||||
left: calc(50% - 68px);
|
||||
top: calc(50% - 68px);
|
||||
|
||||
|
||||
width: 130px;
|
||||
height: 130px;
|
||||
}
|
||||
.rtc-error:after {
|
||||
content: " ";
|
||||
display: block;
|
||||
width: 108px;
|
||||
height: 108px;
|
||||
margin: 8px;
|
||||
border-radius: 50%;
|
||||
border: 6px solid #f00;
|
||||
animation: blinker 1s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes blinker {
|
||||
50% {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
@ -143,6 +143,8 @@ export class MediaManager {
|
||||
let color = this.getColorByString(userName);
|
||||
elementRemoteVideo.insertAdjacentHTML('beforeend', `
|
||||
<div id="div-${userId}" class="video-container" style="border-color: ${color};">
|
||||
<div class="connecting-spinner"></div>
|
||||
<div class="rtc-error" style="display: none"></div>
|
||||
<i style="background-color: ${color};">${userName}</i>
|
||||
<img id="microphone-${userId}" src="resources/logos/microphone-close.svg">
|
||||
<video id="${userId}" autoplay></video>
|
||||
@ -228,6 +230,43 @@ export class MediaManager {
|
||||
element.remove();
|
||||
}
|
||||
|
||||
isConnecting(userId : string): void {
|
||||
let connectingSpinnerDiv = this.getSpinner(userId);
|
||||
if (connectingSpinnerDiv === null) {
|
||||
return;
|
||||
}
|
||||
connectingSpinnerDiv.style.display = 'block';
|
||||
}
|
||||
|
||||
isConnected(userId : string): void {
|
||||
let connectingSpinnerDiv = this.getSpinner(userId);
|
||||
if (connectingSpinnerDiv === null) {
|
||||
return;
|
||||
}
|
||||
connectingSpinnerDiv.style.display = 'none';
|
||||
}
|
||||
|
||||
isError(userId : string): void {
|
||||
let element = document.getElementById(`div-${userId}`);
|
||||
if(!element){
|
||||
return;
|
||||
}
|
||||
let errorDiv = element.getElementsByClassName('rtc-error').item(0) as HTMLDivElement|null;
|
||||
if (errorDiv === null) {
|
||||
return;
|
||||
}
|
||||
errorDiv.style.display = 'block';
|
||||
}
|
||||
|
||||
private getSpinner(userId : string): HTMLDivElement|null {
|
||||
let element = document.getElementById(`div-${userId}`);
|
||||
if(!element){
|
||||
return null;
|
||||
}
|
||||
let connnectingSpinnerDiv = element.getElementsByClassName('connecting-spinner').item(0) as HTMLDivElement|null;
|
||||
return connnectingSpinnerDiv;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param str
|
||||
|
@ -161,9 +161,11 @@ export class SimplePeer {
|
||||
|
||||
peer.on('error', (err: any) => {
|
||||
console.error(`error => ${user.userId} => ${err.code}`, err);
|
||||
this.MediaManager.isError(user.userId);
|
||||
});
|
||||
|
||||
peer.on('connect', () => {
|
||||
this.MediaManager.isConnected(user.userId);
|
||||
console.info(`connect => ${user.userId}`);
|
||||
});
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user