This commit is contained in:
Lamp 2022-04-20 15:09:05 -07:00
parent 2a016a9b1e
commit dcdad3d6d9
2 changed files with 40 additions and 12 deletions

@ -17,31 +17,59 @@
source.src = file;
video.load();
});
socket.on("pos", pos => seek(pos / 1000));
socket.on("play", () => play());
socket.on("pause", () => pause());
socket.on("pos", seek);
socket.on("play", play);
socket.on("pause", play);
//socket.on("end", () => console.log("end"));
video.onseeked = () => socket.emit("pos", video.currentTime * 1000);
video.onpause = () => socket.emit("pause");
video.onplay = () => socket.emit("play");
// detect human-caused events and ignore echo from server
video.onseeked = () => {
socket.off("pos", seek);
socket.once("pos", () => socket.on("pos", seek));
socket.emit("c_pos", video.currentTime * 1000);
};
video.onpause = () => {
socket.off("pause", pause);
socket.once("pause", () => socket.on("pause", pause));
socket.emit("c_pause");
}
video.onplay = () => {
socket.off("play", play);
socket.once("play", () => socket.on("play", play));
socket.emit("c_play");
};
// programatic play/pause/seek without triggering event listeners
function play() {
video.onplay = () => video.onplay = () => socket.emit("play");
var e = video.onplay;
video.onplay = () => video.onplay = e;
video.play();
}
function pause() {
video.onpause = () => video.onpause = () => socket.emit("pause");
var e = video.onpause;
video.onpause = () => video.onpause = e;
video.pause();
}
function seek(time) {
var e = video.onseeked;
video.onseeked = () => video.onseeked = e;
video.currentTime = time;
video.currentTime = time / 1000;
}

@ -31,9 +31,9 @@ io.on("connection", socket => {
else socket.emit("pause");
});
socket.on("reqpos", () => socket.emit("pos", player.position));
socket.on("pos", pos => player.position = pos);
socket.on("pause", () => player.pause());
socket.on("play", () => player.play());
socket.on("c_pos", pos => player.position = pos);
socket.on("c_pause", () => player.pause());
socket.on("c_play", () => player.play());
});
player.on("media", file => io.emit("media", file));