Here is a brief bullet list of requirements for nodojo

  • messages beginning with ‘/’ are server commands
  • /help – show available commands
  • /motd – show message of the day
  • /join <channel> joins or subscribes to a room of the specified name
  • /part <channel> leaves or unsubscribes from a room of the specified name
  • /who <user> show information of the specified user (username, connection time, last message time, room subscriptions)
  • /topic [channel] [text] set the topic of the specified room
  • /list list of existing rooms with the number of users in the room
  • /msg <user> sends a private message to user
  • /nick <new user> sets your name to new user name
  • the message of the day can be set in a text or config file
  • when connecting to the server, the client must provide a username for the user
  • username must be globally unique
  • if the submitted username is already in use, the connection is terminated with an error message
  • usernames must be alphanumeric, beginning with an alpha, and 32 characters or less
  • during initial connection, the client receives the message of the day
  • during initial connection, the client receives the help message
  • the client can get a list of available rooms
  • the client can join an any room
  • if the client joins a room that doesn’t exist, it is created
  • when a room has zero users, it is destroyed.
  • a client can be in any number of room at the same time
  • room names must be alphanumeric, beginning with an alpha, and 32 characters or less
  • room names are designated by a ‘#’ pre-pended to the name
  • when a client joins a room, they subscribe to all messages and notices sent to that room
  • when a client joins a room, they get list of all other room subscriber’s usernames
  • while a client is subscribed to a room, it is notified of all joins and parts of other subscribers
  • while a client is subscribed to a room, it is notified if a subscriber changes it’s user nick
  • messages come from users/clients, and contain the text of the message and the intended room to receive the message
  • when sending messages to clients message contain the text of the message, the indended room to receive the message, and the username of the client that sent the message.
  • clients must be subscribed to the room to send a message to the room
  • notices are server-originated messages sent to the client, like help text, and not from a user

It’s very IRC-like