video-sync-thing/server.js

47 lines
1.2 KiB
JavaScript

var express = require("express");
var socketio = require("socket.io");
var MediaPlayer = require("./mediaplayer");
var app = express();
var server = app.listen(1234);
var io = socketio(server);
app.use(express.static("."));
var player = new MediaPlayer();
player.setMedia("media/nyan_cat.webm").then(() => {
player.play();
});
player._emit = player.emit;
player.emit = function() {
console.debug("player emit", arguments);
player._emit.apply(player, arguments);
}
player.on("end", () => setTimeout(() => player.play(), 5000));
io.on("connection", socket => {
socket.on("syncme", () => {
socket.emit("media", player.file);
socket.emit("pos", player.position);
if (player.playing) socket.emit("play");
else socket.emit("pause");
});
socket.on("reqpos", () => socket.emit("pos", player.position));
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));
player.on("play", () => io.emit("play"));
player.on("pause", () => io.emit("pause"));
player.on("pos", pos => io.emit("pos", pos));
player.on("end", () => io.emit("end"));
global.player = player;