Translate this page automatically.

Accelerated Application Design







I eXpress myself ... therefore IM

IM is an Instant Messenger system designed to give IM capability to any Xbase++ application. It works similarly to popular IM's such as Yahoo, MSN, etc. however it does not require connection to Yahoo or MSN servers. Instead, the IMSERVER.EXE program is the IM server and can be located anywhere in the world of the Internet, Intranets, or VPN's. A connection to the internet is not required, only a connection to a server that is running IMSERVER.EXE.

IM was designed using the capabilities of Xbase ++ 1.9 and Xb2Net, however it can be compiled in Xbase++ 1.82, except it will use JazzAge for ActiveX features. Communication with the IM Server is done entirely via SOAP and can use any port desired that is not already in use by another server.

How the IM system works

The server is started before any of the clients are started. It is started simply by running the IMSERVER.EXE program. Upon starting, the server will start up an HTTP listener thread that will listen for client connections via normal HTTP and also SOAP. The server is both a Web Server and a SOAP server, therefore it will respond to standard request for HTML files and also SOAP requests from the client programs.

The client programs are started after the server is started by running IMSTART.EXE or calling the function IMClient() from the Xbase++ application. All communication between the client and the server is accomplished via HTTP or HTTPS protocol, depending on the IM.INI file. Communication is accomplished via SOAP (simple object access protocol). The client sends a SOAP request via one of the many methods available on the server, then the server responds with a SOAP response which may include multiple pieces of information, depending on the method called.

After starting, the client starts two (2) threads: Thread 1 launches a window that displays all available users or only logged on users, depending on user preferences. Thread 2 is a loop that first sends a "LogOn" request to the server, then calls the "WaitForMessage" SOAP request. A persistent connection will be made to the server and this connection will will not return until either a specified timeout period or the server returns information specifying that the user has a message or that the status of one or more users has changed. The "WaitForMessage" method will return every time a user logs on or logs off, or when a message has been received.

If a user logs on or off, then the user window is refreshed with the most current information. If a message is received, then one of several scenarios may occur. (1) If there is no message window opened, then a new message window will be created and launched in a new thread and the incoming message will be displayed. (2) If there is already a message window open that is communicating with the remote user, the message will be displayed in the window along with previous message threads. When the local user types a message and presses enter or clicks send, the message is displayed in the current window and also sent to the server.

To start a message thread with another user, double-click the name of the user in the user window and it will open up a message window in a new thread. Multiple windows with multiple conversations may be running concurrently. Sending and receiving audibles is esentially the same process as sending and receiving messages except a special message type is sent containing the name of the audible to play. The audible wave files are accessible via the client program in the \im\client\media directory.

The IM client program always returns to the WaitForMessage SOAP request after it has performed any function, therefore this is the stable state of the client application. The client and server programs have been optimized to reduce the amount of network traffic and server threads to maximize performance and minimize memory requirements.

Messages are placed in a file named IMMSG.DBF by the IM server program. After a message is delivered, the record is marked as READ or it is deleted, depending on the server settings. Messages may be kept for a specified number of days so that a supervisor may monitor conversations.

Message windows may be configured for Yahoo style or MSN style, depending on how each client prefers to see messages displayed.

A message "conference" is similar to a chat room in which multiple users can all carry on a conversation with the text interlaced in a single window on each workstation in the order that the messages are sent and received. To start a conference, first start a message thread to another user by clicking on the user name. At any time in the conversation, another user may be "invited" to the conversation by selecting the user from a popup list of available users. A new message window will appear on the new users desktop and the entire contents of the existing conversation will appear in the new window so that the new user will be brought up to date.

The IM system was designed to run on a wide area network (such as the Internet) or on a local area network. The fundamental difference is that when running on a wide area network, the client files and runtime must be installed on each workstation, whereas in a local area network, all workstations can acquire the client files from the file server, thus insuring that everyone is running the latest version of the program. When running on a wide area network, the client program is capable of checking for a more current version of the IMCLIENT.DLL every time it starts and automatically download the most current version from the server. Additionally, new media wave files posted on the server are also automatically downloaded to each client workstation.

Features:

System Requirements: