|
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <script type="text/javascript" src="/scripts/json2.js"></script>
- <script type="text/javascript" src="/scripts/jsonrpc.js"></script>
- <title>Chat Room</title>
-
- <script type="text/javascript">
- // Global values:
-
- // RPC object with two methods:
- //
- // get(counter), returns array of objects with properties author and message
- // post(author,message) posts new chat message
- //
- rpc = new JsonRPC('/chat',['get'],['post']);
- // Messages counter - where to get new messages from, parameter for rpc.get
- message_count = 0;
-
- function make_error(what,e)
- {
- document.getElementById('error_message').innerHTML = what + ': ' + e.type +': ' + e.error;
- }
-
- rpc.get.on_result = function(messages) {
- var messagesHtml = document.getElementById('messages');
-
- for(var i=0;i<messages.length;i++) {
- m=messages[i];
- messagesHtml.innerHTML+='<dt>' + m.author +'</dt>' +
- '<dd>' + m.message + '</dd>';
- message_count++;
- }
-
- restart();
- }
-
- rpc.get.on_error = function(e) {
- make_error('Getting New Messages',e);
- document.getElementById('reconnect').disabled = false;
- }
-
- rpc.post.on_result = function() {
- // reset the form content
- document.getElementById("message").value = '';
- }
- rpc.post.on_error = function(e) {
- make_error('Posting New Messages',e);
- }
-
- function restart()
- {
- rpc.get(message_count);
- }
-
- function reconnect_to_server()
- {
- message_count = 0;
- document.getElementById('error_message').innerHTML = '';
- document.getElementById('messages').innerHTML = '';
- document.getElementById('reconnect').disabled = true;
- restart();
- return false;
- }
-
- function send_data() {
- author = document.getElementById('author').value;
- message = document.getElementById("message").value;
- rpc.post(author,message);
- return false;
- }
- </script>
-
-
- </head>
- <body onload='restart()'>
- <h1>Chat room</h1>
- <form id="theform" >
- <p>Name: <input id="author" type="text" value="" /></p>
- <p>
- Message: <input id="message" type="text" value="" /></p>
- <input type="submit" value="Send" onclick="return send_data()"/>
- <input disabled="disabled" id='reconnect' type='submit' value='Reconnect' onclick='return reconnect_to_server()'>
- </p>
- <p id='error_message'></p>
- </form>
- <dl id="messages">
- </dl>
- </body>
|