ChatForte Protocol
Overview Srilekha Ramanujam srilek@sourceforge.net An overview of the ChatForte protocol version 1.0 |
Introduction ChatForte is a collaborative system which is intended to facilitate collaboration among members of different communities and by any means. In short, it is aimed at building an all-in-one collaborating solution. ChatForte is implemented in Java making it portable for the highest
degree of usefulness. The ChatForte client needs to be downloaded on
client machines in order to make it a part of the collaboration. The messages
exchanged between different clients and the ChatForte system can be tailored
according to the network connectivity (high speed networks to low speed
modems to wireless connections). ChatForte provides the concept of
using filters for each collaborative session which in turn |
Messages ChatForte uses the concept of active messaging where messages received from the client side process themselves at the server side. This messaging protocol defines various types of messages where each message is defined separately for the client and the server side. The types of messages are defined as follows
Each message consists of the following information in common
Message Types and Data Types The message types are used to classify the messages according to their types such as Login, Logout, Chat, Whiteboard, Status and Error. The data types are used to classify the type of data sent in the message body. These are text, text array, point, point array, line, line array and so forth. The message body is identified using its data type and the data is dealt with accordingly. Message Meta Information The message meta information consists of the message version and the message type. This meta information is used to communicate the right protocol. |
Message Filters The message filters are used by the two main roles on the collaborative system (master and the admin) to enforce policies into their sessions. Some of the filters that are currently available are
|
Message
Priorities
Each
message type can be assigned a priority by the master of a session. The sub-message
types can be defined by the master and can be assigned priorities also.
For example, the chat and the whiteboard message in a session can be assigned
different priorities. But if the master would like to differentiate several
sub-types of chat messages (bidding, product enquiry etc), that is also
very much possible. The message priorities is not dealt in this version
at present. |
Role Based
Access Control
The main roles that take part in this
collaborative system are the admin, master and the user. The admin is responsible
for the entire system while the master is responsible for a session invoked
at the system. The user refers to the end user of the collaborative system.
The admin plays the critical role and hence carries the highest priority
at the system level. The master is the second critical role that carries
the next highest priority. The admin sets policies at the system level. The
master sets the policies at the session level. The policies are set using
the above mentioned message filters. Several filters can be applied on the
same message. The filters are executed in the order they are chosen.
Apart from this, the admin and the master are entitled to send command messages
that have the highest priority among other message types. This command message
include such thing as change of algorithm in the encryption filter, freeze
the whiteboard, choose different colors for whiteboard users, disconnecting
users, setting the compression mode, setting the transmission mode and a
lot of other things that will enable a complete control on the system. The
admin's command message has a higher priority over the master's command message. |
ChatForte IO Streams A ChatForte session consists of two parallel streams, one from the client side and another from the server side. The ChatForte client initiates the connection with the ChatForte server and if the client login succeeds, the server allows the client to join the session chosen. The ChatForte IO streams are responsible for formatting the data exchanged between the client and the server. The formatting is simpler at present and can be changed without affecting the rest of the system. The versioning of messages allow different protocol versions to be used within the ChatForte system simultaneously. Here is a simple message format: <metaInfo><message header <message info>><message body> 1 v1.0 1 session context source destination date time <attr1, val1> ... <attrn, valn> The space is the delimiter and if there is a space within a field, it is escaped by using two backslash as '\\ '. The order of different fields are mentioned here:
The message format can be defined from the simplest to the most complicated and detailed based on the application requirements. |