Over the past week, we have been working on creating the Ynui Chat chat room. Ynui Chat is fully functional now, but it is still in BETA stages and needs some more testing by the public. More features are expected to be added in the future.
You need to be logged in to use Ynui Chat. To read more about the technical side on how Ynui Chat works, click the link below to read the rest of the article.
Technical Information about Ynui Chat:
Ynui Chat is based around a fairly recent technology called AJAX or Asynchronous JavaScript and XML, this is the same technology used by Gmail, Google Suggest and Google Maps, where a JavaScript function is able to create a data connection over HTTP directly to the server. Data can be sent over this connection in both directions, even after the web page has already loaded. This is the same technique that Gmail uses to continuously check your email, without reloading the page.
The concept behind the AJAX framework we wrote, is to allow JavaScript to execute a remote PHP function on the server and return this information back over the HTTP connection. Data is encoded in a format called JSON or JavaScript Object Notation, which is easily decoded by a JavaScript function on the other end. Data blocks over 1Kb in size are automatically compressed using native HTTP GZIP compression, this greatly speeds up communication between the server. AJAX allows for a whole range of new web applications to be created, previously not possible.
Ynui Chat uses the AJAX framework to create a client-server network between all the users in the room. Each client has to ping the server at regular intervals to get information about other users in the room and to receive any new messages. New messages that are sent, get put in a queue and will arrive on each users screen, as soon as their machine runs a ping command to the server. If a client has not sent a ping command for a long time, that user is automatically dropped from the room and a message is sent to the other users that a user has left the room or disconnected.