About the author
Many years ago, around 2003-2004, I stumbled upon ChatJet when Borland used it for its online chat. I was fascinated by the software, which allowed users to chat with other users, using just a web browser. What was amazing about the ChatJet software is that it made chatting with a web browser much like chatting on IRC.
Software of that time which provided chat functionality typically had to refresh the entire web page just to serve new messages, however, ChatJet was more efficient. If someone on the other side entered a new message, it was instantly delivered to your side, without you having to refresh.
Fascinated with the software, I quickly searched on the Internet on how this feat was performed, since I had no access to the actual ChatJet software (the ChatJet executable). I then found a reference on how it was performed technically.
Subsequently, I developed my own chat software (named ChatServer) based on that small paragraph, and when it worked, I quickly added thread support, so that multiple users can chat with each other. Much of the features found in ChatJet were also found in ChatServer. Based upon simple descriptions of ChatJet features, I was able to develop similar functionality in ChatServer as well.
Some of the features include:
In addition to web browser support, I also developed a console on the server end. Here's how the console looked then in 2004:
Here's how the web user sees it. The user has to enter a nick name, and optionally, a password (I never extended the password feature any further)
After entering the nick name, here's what the user sees. There's a welcome message at the top. At the bottom, there's a box where the user can enter messages to be sent to those in the same channel.
The console provided information that I can use for debugging, and in addition, it also showed the scripts that was sent to the web browser as well. It also displayed in the console, the web browser that was used by the user.
The chat software was then tested by Dave Nottage and Chris Dickerson, and wasn't developed further. It was all a proof of concept to me.
Continued discussion of undocumented Delphi 8 Property Access Specifiers, and other ways of adding and removing delegates / events handlers, including clearing the list of all the delegates / event handlers.