"ws://" + window.location.host + ":3000");
ws.onopen = (event)=>{
- send("get_items", {});
+ self.send("get_items", {});
+ self.send("get_queue", {});
}
ws.onmessage = (event)=>{
cmd = JSON.parse(event.data);
- if (cmd.cmd !== "items")
+ if (cmd.cmd !== "items" && cmd.cmd !== "queue")
{
self.state = cmd;
}
};
};
- const send = (cmd, data = {})=>{
+ self.send = (cmd, data = {})=>{
const blob = Object.assign({ cmd: cmd}, data);
console.log(blob);
ws.send(JSON.stringify(blob));
};
self.skip = (data)=>{
- send("skip");
+ self.send("skip");
};
self.play_pause = (data)=>{
if (self.state["playing"])
{
- send("pause");
+ self.send("pause");
}
else
{
- send("play");
+ self.send("play");
}
};
self.pause = (data)=>{
- send("pause");
+ self.send("pause");
};
self.chan_next = (data)=>{
- send("chan_next");
+ self.send("chan_next");
};
self.chan_prev = (data)=>{
- send("chan_prev");
- };
-
- self.play_next = (path)=>{
-
- };
-
- self.play_now = (path)=>{
-
+ self.send("chan_prev");
};
return self;
<input type="button" value="Skip" onclick="javscript:Client.skip()"/>
<input type="button" value="Chan +" onclick="javscript:Client.chan_next()"/>
<input type="button" value="Chan -" onclick="javscript:Client.chan_prev()"/>
- <input type="button" value="Queue" onclick="javscript:Client.chan_prev()"/>
+ <input type="button" value="Enqueue" onclick="javscript:Client.enqueue()"/>
</div>
<script type="text/javascript" src="client.js"></script>
<script>
(()=>{
+ let items = []
Client.connect((data)=>{
console.log(data);
- if (cmd.cmd !== "items")
+ if (cmd.cmd === "items")
{
- currVid.innerText = data["curr"]["path"]
- nextVid.innerText = data["next"]["path"]
- playBtn.value = (data["playing"] ? "Pause" : "Play");
+ console.log("received items");
+ console.log(data);
+ items = data["items"];
}
- else
+ else if (cmd.cmd === "queue")
{
- console.log("received items");
+ console.log("received queue");
console.log(data);
}
+ else
+ {
+ currVid.innerText = data["curr"]["path"]
+ nextVid.innerText = data["next"]["path"]
+ playBtn.value = (data["playing"] ? "Pause" : "Play");
+ }
});
+
+ Client.enqueue = ()=>{
+ console.log("enqueue");
+ Client.send("enqueue", { path: items[0]["path"] });
+ };
})();
</script>
</body>
Iodine.run_every(1000) do
if player.update
broadcast("play", @@player.state)
+ broadcast("queue", {"queue" => @@player.queue})
end
end
Iodine.threads = 1
def on_skip(client, data)
@@player.skip
+ broadcast("queue", {"queue" => @@player.queue})
end
def on_play(client, data)
def on_chan_next(client, data)
@@player.chan_next
+ broadcast("queue", {"queue" => @@player.queue})
end
def on_chan_prev(client, data)
@@player.chan_prev
+ broadcast("queue", {"queue" => @@player.queue})
end
def on_get_items(client, data)
client_send(client, "items", @@player.items)
end
+ def on_get_queue(client, data)
+ client_send(client, "queue", {"queue" => @@player.queue})
+ end
+
+ def on_enqueue(client, data)
+ @@player.enqueue(data["path"])
+ broadcast("queue", {"queue" => @@player.queue})
+ end
+
extend self
end
end