$30
In this assignment you will implement a chat room application by using the TCPMultiServer example that was discussed in your lab. In this context chat rooms are group conversations. In a chat room, all clients are identified by their nickname. Whenever a client sends a message, the server receives it and passes it to all other clients. Here is a representation of a chat scenario with three clients: John, Bob and Bill. Notice their message will not echo on their own screen but just be sent to other clients.
Clients should see all conversations whenever they are posted.Furthermore, you should implement a private message feature. Private messages will be delivered to the target client rather than being broadcasted to all clients. For instance, when a server receives a message like “PM john how’s it going?” it should redirect this message to the client whose nickname is john. This message should not appear in any client’s screen except the client with the nickname john. You can assume nicknames do not include space characters.
Additional to the previous laboratory work; you should implement a chat room listing feature. The server should advertise the names of the users in the chat every 30 seconds. Following up from the scenario above; there should be three participants advertised in the list - John, Bob and Bill. The server should simply list their names. Whenever a client disconnects, then the server should remove the relevant nick name from the active participants list and rebroadcast accordingly.