Chat

From PlainOldWebserver

Jump to: navigation, search

Back to Top

This an AJAX-based chat server that can handle several clients. It takes advantage of 'pow_server' as a persistent object. Any instance variable (in this case 'pow_server.text_buffer') can be used to store session data except reserved words (GET, POST, etc.). The helper function, pow_run_ajax does some of the work. The result is a fairly slim chat client.

An example Chat program is running right now. (If it is down, it means I closed Firefox by accident.)

chat.sjs:

 <?sjs
       // NOTE: THIS PAGE must be named chat.sjs to work properly
       pow_server.put_text = function() {
         if(pow_server.GET['text']) {
            var chat_text = 
              decodeURIComponent(pow_server.GET['id']+": "+
           pow_server.GET['text']);
           if(!pow_server.text_buffer) {
              pow_server.text_buffer = new Array();
           } else if(pow_server.text_buffer.length > 10) {
              pow_server.text_buffer.shift()
           }
           pow_server.text_buffer.push(chat_text);
         }
         var changetext = new Array('changeme',
           pow_server.text_buffer.join("<br>"));
               return changetext;
       }
       pow_run_ajax();
 ?> 
 <script>
 var server_location = '/chat.sjs?AJAX=true';
 start_loop();
 function start_loop() {       
   pow_ajax_load(server_location);
   setTimeout("start_loop()" ,2000);
 }
 function handle_submit() {
     var url = server_location;
      var form = document.getElementById("my_text");
                url += "&text="+form.elements[1].value+"&id="+
        form.elements[0].value;
      form.elements[1].value = "";
    pow_ajax_load(url);
 }
 </script>
 <form id='my_text' onsubmit= 
   "handle_submit();   
 return false;" action="#Oops" method='GET' >
   Name: <input name="id" value="YOUR ID" type="text" />  
 
<div id="changeme">Text to change</div> Message: <input name="chat_text" type="text" /> <input type='submit' value='Send' /> </form> </body> </html>
Personal tools
Navigation