Chat Server

Explain hwo you would design a chat server. In particular, provide details about the various backend components, classes, and methods. What would be the hardest problems to solve?

Solution

Some ideas:

  • Signing online and offline
  • Add requests (sending, accepting, and rejecting)
  • Updating a status message
  • Creating private and group chats
  • Adding new messages to private and group chats

We must have a concept of users, add request status, online status, and messages.

Other keywords: database, XML

  • class UserManager
  • class User
  • class Conversation
  • class GroupChat extends Conversation
  • class PrivateChat extends Conversation
  • class Message
  • class AddRequest
  • class UserStatus
  • enum UserStatusType
  • enum RequestStatus