You are viewing [info]chatter_dev's journal

Prototype Web Client!

Jan. 30th, 2006 | 03:56 pm

Over the past few days I have been working on the prototype web client. I finally got something working and managed to release it today. It supports everything that the server can do so far (connect,disconnect, basic chat, and user listing). I also added dynamic update timing which has proven to be controversial and will need some work. The idea is that if you don't send anything for a certain amount of time your update requests become slower so that you use less bandwidth. In practice it has hampered people's ability to keep up with the conversation under certain circumstances. Several ideas were proposed to improve it and these are currently under consideration.

Link | Leave a comment | Add to Memories | Share

Web client connections

Jan. 26th, 2006 | 12:28 am

Spent some time tonight working on some initial tests for the web client. As it is not possible to connect from the browser directly to a server on another port I first implemented a simple "reverse proxy" in php that acts as a relay between the client and the XML server. Hopefully this can be replaced by the more efficient "apache proxy" method once Ben gets it working. Once that was working I sent a <connect> message from the web client to the XML server and successfully received a reply.

Link | Leave a comment | Add to Memories | Share

First Server Release

Jan. 25th, 2006 | 12:15 am

The first level of server functionality is now complete. The server now supports the following:
  • Create a session (log in - no authentication yet)
  • Remove a session (log out)
  • Send a chat message (causing an update to be returned)
  • Request an update (sends all new messages since you last updated)
  • Request a list of connected users

    It is now at the stage where a client can be built to provide a simple chat functionality.

    Things completed tonight:
    XML Server
  • Implemented the Output and OutputQueue objects.
  • Added an attribude to the User object to timestamp the last time an update was made.
  • Implemented updates, everything newer than timpstamp is output to the user in the correct order.
  • Added the <update> message to force an update. Currently <noop/> is returned if there is nothing new.
  • Implemented the <send> message to add a chat message to the system queue.
  • Added connect and disconnect messages to the system queue.
  • Link | Leave a comment | Add to Memories | Share

    Protocol update and output queues

    Jan. 22nd, 2006 | 10:19 pm

    Spent some time improving the server protocol and updated the protocol document. Decided that the server should be entirely connectionless as this simplifies things. The only point to the connection oriented operation was to reduce the bandwidth required for the "telnet server" client, however the number of users connecting through telnet is likely to be small and the "telnet server" client is likely to be hosted on the same machine as the XML server.

    Also thought more about output queues. The concept is that the server needs to store up output for each user until the next time they connect. If the client has nothing to send then they can "ping" the server periodically for updates.

    Decided that each channel should have an output queue containing a list of time stamped output (meaning chat messages, join/leave, moderator actions etc). When the client requests an update the server can simply return all output with a newer time stamp than the last time the user updated that channel. Also, the client can tell the server which channels are being viewed at a particular time and only recieve updates on those channels. There also needs to be a queue for each user for "system output" where all the non-channel specific output can be buffered.

    Now I am trying to think of a way to implement output queues on the server with at least a moderate level of efficiency...

    Link | Leave a comment | Add to Memories | Share

    Saturday night

    Jan. 22nd, 2006 | 12:28 am

    Too tired to do much tonight, but still managed a bit.

    XML Server
  • Added disconnections via the <disconnect> message
  • Started some preliminary work on output queues
  • Link | Leave a comment | Add to Memories | Share

    Server Logins

    Jan. 20th, 2006 | 11:23 pm

    Got quite a lot done tonight.

    XML Server
  • Added a mutex around the processing of incoming message. This will enable the modification of the talker state without race conditions.
  • Added exception handling during message processing. Errors are sent to the user via the <error> message.
  • Added seperate handling for each XML message type.
  • Added users and session ids to the Chat object.
  • Implemented the <connect> message (currently without password).
  • Implemented a simple <who> message to output everyone currently connected.
  • Link | Leave a comment | Add to Memories | Share

    Server Structure and XML parsing

    Jan. 19th, 2006 | 11:15 pm

    Tonight I started working on the basic object structure and XML parsing.

    XML Server
  • Defined the basic classes Server, XMLProcessor, Chat and User.
  • Implemented XML parsing of input using REXML.
  • Link | Leave a comment | Add to Memories | Share

    First Steps

    Jan. 16th, 2006 | 11:05 pm

    Began work on the server in Ruby. Implemented a simple multi-threaded
    test server that echoes everything typed to all connections.

    Link | Leave a comment | Add to Memories | Share

    About

    Jan. 15th, 2006 | 01:45 pm

    This is my personal developer log for "The Chatter". The basic outline
    of the project is as follows:

  • A connectionless XML based server (implemented in Ruby)
  • A web front-end written in HTML, CSS and Javascript
  • A simple telnet server that provides a legacy command based enviroment

    I have been working on chat applications for over 7 years. My main
    interest has always been in providing flexible, easy to use and rich
    chatting environments. The focus of this project is to provide the
    best possible user experience which is where I hope it will stand
    out from the large number of chatting applications that already exist.
  • Link | Leave a comment | Add to Memories | Share