Mercurial > hg > rlgwebd
comparison rlgwebd.js @ 112:4f2b89e6fde2
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.
| author | John "Elwin" Edwards <elwin@sdf.org> | 
|---|---|
| date | Mon, 16 Jul 2012 08:23:51 -0700 | 
| parents | f56fdfeed01a | 
| children | 43340faa061c | 
   comparison
  equal
  deleted
  inserted
  replaced
| 111:f56fdfeed01a | 112:4f2b89e6fde2 | 
|---|---|
| 171 this.write = function(data) { | 171 this.write = function(data) { | 
| 172 this.term.write(data); | 172 this.term.write(data); | 
| 173 }; | 173 }; | 
| 174 // Teardown. | 174 // Teardown. | 
| 175 this.term.on("exit", function () { | 175 this.term.on("exit", function () { | 
| 176 var id = ss.sessid; | |
| 176 fs.unlink(ss.lock); | 177 fs.unlink(ss.lock); | 
| 177 ss.record.end(); | 178 ss.record.end(); | 
| 178 ss.emit('exit'); | 179 ss.emit('exit'); | 
| 179 var id = ss.sessid; | 180 gamemux.emit('end', id, ss.pname, ss.game.uname); | 
| 180 delete sessions[id]; | 181 delete sessions[id]; | 
| 181 tslog("Game %s ended.", id); | 182 tslog("Game %s ended.", id); | 
| 182 gamemux.emit('end', id); | |
| 183 }); | 183 }); | 
| 184 this.close = function () { | 184 this.close = function () { | 
| 185 if (this.sessid in sessions) | 185 if (this.sessid in sessions) | 
| 186 this.term.kill('SIGHUP'); | 186 this.term.kill('SIGHUP'); | 
| 187 }; | 187 }; | 
| 1227 conn.sendUTF(JSON.stringify({"t": "b", "n": n, "p": name, "g": game})); | 1227 conn.sendUTF(JSON.stringify({"t": "b", "n": n, "p": name, "g": game})); | 
| 1228 }; | 1228 }; | 
| 1229 var listH = function (list) { | 1229 var listH = function (list) { | 
| 1230 conn.sendUTF(JSON.stringify(list)); | 1230 conn.sendUTF(JSON.stringify(list)); | 
| 1231 }; | 1231 }; | 
| 1232 var endH = function (n) { | 1232 var endH = function (n, pname, gname) { | 
| 1233 conn.sendUTF(JSON.stringify({"t": "e", "n": n})); | 1233 conn.sendUTF(JSON.stringify({"t": "e", "n": n, "p": pname, "g": gname})); | 
| 1234 }; | 1234 }; | 
| 1235 gamemux.on('begin', beginH); | 1235 gamemux.on('begin', beginH); | 
| 1236 gamemux.on('list', listH); | 1236 gamemux.on('list', listH); | 
| 1237 gamemux.on('end', endH); | 1237 gamemux.on('end', endH); | 
| 1238 conn.on('message', tell); | 1238 conn.on('message', tell); | 
