view index-rlg.html @ 49:423ef87ddc9b

RLG-Web: delay removing TermSessions until the client is informed. Add a TermSession.sendq flag that indicates whether a type q message has been sent to the client. Don't immediately destroy the TermSession on child exit if the message hasn't been sent. This is an ugly hack until the TermSession class is separated into an EventEmitter to handle the PTY and a listening object that handles communication with the client. That will also allow other clients to watch the game.
author John "Elwin" Edwards <elwin@sdf.org>
date Mon, 11 Jun 2012 09:15:33 -0700
parents 33bdb3d466e3
children bef5629f50d8
line wrap: on
line source

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>RLG-Web α</title>
<script type="text/javascript" src="termemu.js"></script>
<script type="text/javascript" src="termemu-keys.js"></script>
<script type="text/javascript" src="rlgterm.js"></script>
<link rel="stylesheet" type="text/css" href="tty.css">
<link rel="stylesheet" type="text/css" href="style-rlg.css">
</head>
<body onload="setup()" onkeydown="sendkey(event)">
<h1>RLG-Web α</h1>
<div id ="top">
  <span id="ttitle"></span>
  <img src="/bell.png" alt="bell" id="bell">
</div>
<div id="termwrap">TERM</div>
<div class="modal" id="keyboard">
<div class="keyrow">
  <div class="key" onclick="vkey('`')">`</div>
  <div class="key" onclick="vkey('1')">1</div>
  <div class="key" onclick="vkey('2')">2</div>
  <div class="key" onclick="vkey('3')">3</div>
  <div class="key" onclick="vkey('4')">4</div>
  <div class="key" onclick="vkey('5')">5</div>
  <div class="key" onclick="vkey('6')">6</div>
  <div class="key" onclick="vkey('7')">7</div>
  <div class="key" onclick="vkey('8')">8</div>
  <div class="key" onclick="vkey('9')">9</div>
  <div class="key" onclick="vkey('0')">0</div>
  <div class="key" onclick="vkey('-')">-</div>
  <div class="key" onclick="vkey('=')">=</div>
  <div class="key" onclick="vkey('\b')" style="width: 2.5em">Bksp</div>
</div>
<div class="keyrow">
  <div class="key" onclick="vkey('\t')" style="width: 2.5em">Tab</div>
  <div class="key" onclick="vkey('q')">Q</div>
  <div class="key" onclick="vkey('w')">W</div>
  <div class="key" onclick="vkey('e')">E</div>
  <div class="key" onclick="vkey('r')">R</div>
  <div class="key" onclick="vkey('t')">T</div>
  <div class="key" onclick="vkey('y')">Y</div>
  <div class="key" onclick="vkey('u')">U</div>
  <div class="key" onclick="vkey('i')">I</div>
  <div class="key" onclick="vkey('o')">O</div>
  <div class="key" onclick="vkey('p')">P</div>
  <div class="key" onclick="vkey('[')">[</div>
  <div class="key" onclick="vkey(']')">]</div>
  <div class="key" onclick="vkey('\\')">\</div>
</div>
<div class="keyrow">
  <div class="key" onclick="togglectrl()" id="ctrlkey">Ctrl</div>
  <div class="key" onclick="vkey('a')">A</div>
  <div class="key" onclick="vkey('s')">S</div>
  <div class="key" onclick="vkey('d')">D</div>
  <div class="key" onclick="vkey('f')">F</div>
  <div class="key" onclick="vkey('g')">G</div>
  <div class="key" onclick="vkey('h')">H</div>
  <div class="key" onclick="vkey('j')">J</div>
  <div class="key" onclick="vkey('k')">K</div>
  <div class="key" onclick="vkey('l')">L</div>
  <div class="key" onclick="vkey(';')">;</div>
  <div class="key" onclick="vkey('\'')">'</div>
  <div class="key" onclick="vkey('\n')" style="width: 4em">Ret</div>
</div>
<div class="keyrow">
  <div class="key" onclick="toggleshift()" id="shiftkey">Shift</div>
  <div class="key" onclick="vkey('z')">Z</div>
  <div class="key" onclick="vkey('x')">X</div>
  <div class="key" onclick="vkey('c')">C</div>
  <div class="key" onclick="vkey('v')">V</div>
  <div class="key" onclick="vkey('b')">B</div>
  <div class="key" onclick="vkey('n')">N</div>
  <div class="key" onclick="vkey('m')">M</div>
  <div class="key" onclick="vkey(',')">,</div>
  <div class="key" onclick="vkey('.')">.</div>
  <div class="key" onclick="vkey('/')">/</div>
</div>
<div class="keyrow">
  <div class="key" onclick="vkey(' ')" id="spacebar"></div>
</div>
<div class="rfloat"><span class="ibutton" onclick="stop()">Stop</span></div>
<div class="rfloat">Font:
<span onclick="textsize(false)" class="ibutton">Smaller</span>
<span onclick="textsize(true)" class="ibutton">Larger</span>
</div>
</div>
<div class="modal" id="startgame">
<div id="opttable"><div><div>Game</div><div>Actions</div></div></div>
</div>
<div class="modal" id="login">
<form id="loginform" action="/login" method="post">
<div>
Name: <input type="text" name="name" id="input_name"> 
</div>
<div>
Password: <input type="password" name="pw" id="input_pw">
</div>
<div>
<input type="submit" value="Log in" onclick="formlogin(event)">
</div>
</form>
<div class="rbutton" onclick="setmode('register')">Register</div>
</div>
<div class="modal" id="register">
<form id="regform" action="/addacct" method="post">
<div>
Name: <input type="text" name="name" id="regin_name"> 
</div>
<div>
Password: <input type="password" name="pw" id="regin_pw">
</div>
<div>
E-mail (optional): <input type="text" name="email" id="regin_email">
</div>
<div>
<input type="submit" value="Sign up" onclick="formreg(event)">
<input type="reset" value="Cancel" onclick="setmode('login', event)">
</div>
</form>
</div>
<div id="debug">
<p>Debugging Output</p>
</div>
</body>
</html>