From f4c4f5e0f1a4bddd33bbb62e7b6ff513cb761b42 Mon Sep 17 00:00:00 2001 From: "John \"Elwin\" Edwards" Date: Fri, 13 Jul 2012 08:39:39 -0700 Subject: [PATCH] RLG-Web: Complete the WebSocket watcher. Watching via WebSockets now takes into account terminal size, player name, etc. --- rlgterm.js | 11 +++++++++-- rlgwebd.js | 4 ++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/rlgterm.js b/rlgterm.js index 66e55b5..8e26dd2 100644 --- a/rlgterm.js +++ b/rlgterm.js @@ -704,12 +704,19 @@ function wsWatch(gamenumber) { ws.onopen = function (event) { session.id = true; session.sock = ws; - message("You are now watching game #" + gamenumber + "."); setmode("watch"); }; ws.onmessage = function (event) { var msgObject = JSON.parse(event.data); - if (msgObject.t == 'd') { + if (msgObject.t == 'w') { + termemu.resize(msgObject.h, msgObject.w); + termemu.reset(); + termemu.toAltBuf(); + var pname = msgObject.p; + var gname = games[msgObject.g].name; + message("You are now watching " + pname + " play " + gname + "."); + } + else if (msgObject.t == 'd') { writeData(msgObject.d); } }; diff --git a/rlgwebd.js b/rlgwebd.js index ade7831..a9df6eb 100755 --- a/rlgwebd.js +++ b/rlgwebd.js @@ -390,6 +390,10 @@ function wsWatcher(conn, session) { session.removeListener('exit', exitH); tslog("A WebSocket watcher has left game %d", session.sessid); }); + conn.sendUTF(JSON.stringify({ + "t": "w", "w": session.w, "h": session.h, + "p": session.pname, "g": session.game.uname + })); conn.sendUTF(JSON.stringify({"t": "d", "d": session.framebuf.toString("hex", 0, session.frameoff)})); }