--- /dev/null
+const Client = ((self = {})=>{
+ let ws = null;
+
+ self.connect = (onmsg)=>{
+ self.onmessage = onmsg;
+
+ ws = new WebSocket(
+ "ws://" + window.location.host + ":3000");
+
+ ws.onmessage = (event)=>{
+ self.onmessage(JSON.parse(event.data));
+ };
+
+ ws.onclose = ()=>{
+ self.connect(onmsg);
+ };
+ };
+
+ const send = (cmd, data = {})=>{
+ const blob = { cmd: cmd, data: data};
+ console.log(blob);
+ ws.send(JSON.stringify(blob));
+ };
+
+ self.skip = (data)=>{
+ send("skip");
+ };
+
+ self.play = (data)=>{
+ send("play");
+ };
+
+ self.pause = (data)=>{
+ send("pause");
+ };
+
+ self.chan_next = (data)=>{
+ send("chan_next");
+ };
+
+ self.chan_prev = (data)=>{
+ send("chan_prev");
+ };
+
+ self.play_next = (path)=>{
+
+ };
+
+ self.play_now = (path)=>{
+
+ };
+
+ return self;
+})();
\ No newline at end of file
<input type="button" value="Chan +" onclick="javscript:Client.chan_next()"/>
<input type="button" value="Chan -" onclick="javscript:Client.chan_prev()"/>
-
<script type="text/javascript" src="client.js"></script>
<script>
(()=>{
require 'atv/channel'
require 'atv/player'
require 'atv/server'
+require 'fileutils'
-db = ATV::Database.new(ENV["ATV_ROOT"] || "/var/www/atv")
+ATV_ROOT = (ENV["ATV_ROOT"] || "/var/www/atv")
+ASSET_DIR = File.join(File.dirname(__FILE__), "../assets")
+
+# Update website files first
+Dir.glob("#{ASSET_DIR}/**/*.*").each do |path|
+ file = File.basename(path)
+ puts "#{ATV_ROOT}/#{file}"
+ FileUtils.cp(path, "#{ATV_ROOT}/#{file}")
+end
+
+# Then run the server
+db = ATV::Database.new(ATV_ROOT)
channels = [
ATV::Channel.new('Everything', db,
["Movies", "Shorts", "Shows"])
]
player = ATV::Player.new(db, channels)
ATV::Server.start(player)
-#server = ATV::Server.new(player)
-#server.start
Iodine.publish(:atv, JSON.dump(obj))
end
+ def client_send(client, obj)
+ puts "To #{client} #{JSON.dump(obj)}"
+ client.write JSON.dump(obj)
+ end
+
def on_open(client)
puts "connect: #{client}"
client.subscribe :atv
- publish(@@player.state.merge({"cmd" => "play"}))
+ client_send(client, @@player.state.merge({"cmd" => "play"}))
end
def on_close(client)
def on_message(client, cmd)
cmd = JSON.parse(cmd)
- Cmds[cmd["cmd"]].call(cmd["data"])
+ send("on_#{cmd["cmd"]}".to_sym, cmd)
+ end
+
+ def on_skip(data)
+ puts "skip"
+ end
+
+ def on_play(data)
+ puts "play"
end
- def send(client, data)
- client.write JSON.dump(data)
+ def on_pause(data)
+ puts "pause"
end
+ def on_chan_next(data)
+ puts "chan_next"
+ end
+
+ def on_chan_prev(data)
+ puts "chan_prev"
+ end
+
+# def send(client, data)
+# client.write JSON.dump(data)
+# end
+#
# Cmds = {
# "skip" => lambda do |data|
# cfg = $channels[$channel]