Body of this page last updated 1997-11-01, although the actual material dates from 1994 or 1995. Since I wrote this, ICQ has gone into operation, along with half a dozen other similar systems. I believe most of these are built along Tunachat-like lines. This paragraph added 1999-02-26.
Chatroom servers are pretty simple buggers. Basically, they do three things:
In a traditional chat server, these are all put together in a single big server program. IRC expands this so there are several connected servers that act as one big server. I believe this is the wrong paradigm.
Some different approaches follow.
An alternate approach is to use multicast IP, the way the Network Research Group at Lawrence Berkeley Labs did with their wb application, based on their SRM, or Scalable Reliable Multicast, protocol.
A third approach is to have each user maintain a list of the members of the group, and send a copy of each message to each group member when they want to say something. If I need to refer to this approach, I will call it ``the dumb approach''.
The mechanisms for sending messages to groups are generally the same as the mechanisms for sending messages to users, with some sort of pseudo-user representing a group. Except when they're not. See above.
In the server approach, there are directory servers that serve large numbers of users. The traditional chat server implements this function in the main server. There may be multiple directory servers in this approach.
In the synk approach, each user and group server maintains some information about other groups and users. When someone has a query, they send that query to the users and groups they know about, which propagate it to others that they know about, and so on, up to a point. Eventually the user gets some answers.
Some ideas about how we could implement these ideas are available.