A chat server that supports multiple rooms, private messages, receiving messages after being offline and authentication