diff --git a/public/webrtc.js b/public/webrtc.js
index 9decfd4..cce21fb 100755
--- a/public/webrtc.js
+++ b/public/webrtc.js
@@ -77,19 +77,6 @@ class View {
}
}
-class Remote {
- element = null;
-
- constructor(id, stream) {
- document.getElementById("remote").innerHTML += `
-
- `;
- this.element = document.getElementById(id);
- this.element.srcObject = stream;
- View.log(this.element);
- }
-}
-
class Preview {
element = null;
@@ -97,10 +84,6 @@ class Preview {
this.element = document.getElementById(id);
this.element.srcObject = stream;
}
-
- destructor() {
- this.element.remove();
- }
}
class Server {
@@ -112,6 +95,23 @@ class Server {
}
}
+class Remote {
+ element = null;
+
+ constructor(id, stream) {
+ document.getElementById("remote").innerHTML += `
+
+ `;
+ this.element = document.getElementById(id);
+ this.element.srcObject = stream;
+ }
+
+ destructor() {
+ View.log("destructor called");
+ this.element.remove();
+ }
+}
+
class Peer {
peer = null;
streams = {};
@@ -126,17 +126,17 @@ class Peer {
event.streams.forEach((stream) => {
this.streams[stream.id] = new Remote(stream.id, stream);
});
- View.log("/ontrack:", this.streams);
};
- this.peer.onremovestream = (event) => {
- event.streams.forEach((stream) => {
- this.streams[stream.id].destructor();
- delete this.streams[stream.id];
- });
- View.log("/onremovestream:", this.streams);
- };
- this.peer.onconnectionstatechange = (event) => {
- View.log("/onconnectionstatechange:", this.streams, this.peer.connectionState);
+ this.peer.oniceconnectionstatechange = (event) => {
+ switch (this.peer.iceConnectionState) {
+ case "disconnected":
+ case "failed":
+ case "closed":
+ for (var k in this.streams) {
+ this.streams[k].destructor();
+ delete this.streams[k];
+ }
+ }
};
this.peer.addStream(stream);
}