diff --git a/rlgterm.js b/rlgterm.js index a462632..786b97b 100644 --- a/rlgterm.js +++ b/rlgterm.js @@ -533,6 +533,10 @@ function wsCurrent() { } return; } + if (session.lcred) { + /* When starting the socket, the choices list might not be initialized. */ + getchoices(); + } if (statsock) return; statsock = new WebSocket("ws://" + window.location.host + "/status"); @@ -544,10 +548,12 @@ function wsCurrent() { if (e instanceof SyntaxError) return; } - if (msg.t != "t") { - return; + if (msg.t == "t") { + tableCurrent(msg.g); + } + else if ((msg.t == "b" || msg.t == "e") && msg.p == session.lname) { + getchoices(); } - tableCurrent(msg.g); }; statsock.onclose = function (ev) { statsock = null; @@ -555,6 +561,9 @@ function wsCurrent() { } function getcurrent(clear) { + if (WebSocket) { + return; + } if (session.id || clear) { if (statInterval) { window.clearInterval(statInterval); @@ -567,9 +576,6 @@ function getcurrent(clear) { } if (session.lcred) getchoices(); - if (WebSocket) { - return; - } var req = new XMLHttpRequest(); req.onerror = errHandler; req.onreadystatechange = function () { diff --git a/rlgwebd.js b/rlgwebd.js index fbd6aa0..968aeb6 100755 --- a/rlgwebd.js +++ b/rlgwebd.js @@ -173,13 +173,13 @@ function TermSession(game, lkey, dims, handlers) { }; // Teardown. this.term.on("exit", function () { + var id = ss.sessid; fs.unlink(ss.lock); ss.record.end(); ss.emit('exit'); - var id = ss.sessid; + gamemux.emit('end', id, ss.pname, ss.game.uname); delete sessions[id]; tslog("Game %s ended.", id); - gamemux.emit('end', id); }); this.close = function () { if (this.sessid in sessions) @@ -1229,8 +1229,8 @@ function wsHandler(wsRequest) { var listH = function (list) { conn.sendUTF(JSON.stringify(list)); }; - var endH = function (n) { - conn.sendUTF(JSON.stringify({"t": "e", "n": n})); + var endH = function (n, pname, gname) { + conn.sendUTF(JSON.stringify({"t": "e", "n": n, "p": pname, "g": gname})); }; gamemux.on('begin', beginH); gamemux.on('list', listH);