RLG-Web: improvements to choices and status messaging.

Server-side, have gamemux 'end' events include the name and game, so
they can be sent to WebSockets connected to /status.  This means a
WebSocket client only needs to update its choice list when it gets a
begin or end message with its own username.  So it only needs to check
/pstatus/<name> at those times and can stop polling.
This commit is contained in:
John "Elwin" Edwards 2012-07-16 08:23:51 -07:00
parent a0be18657b
commit f7f56fedae
2 changed files with 16 additions and 10 deletions

View file

@ -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);