Requirements of Chat Server Go program:
1. The program must be written in Go.
2. The server should be able to read short messages from clients concurrently (at the same time) and enable other participants to respond quickly. The communication should be similar to that of a spoken conversation, unlike apps such as those for forums and email.
3. Let multiple people talk at the same time on the Chat server.
4. Anything said is seen by everyone unless the sender specifies that the message is a PM (private message) and names the receiver.
5. Make the chat app extensible. To add more features we should be able to implement and export a server-side method and write a client stub which calls the exported method over RPC.
6. Test your program to see that the Request and Reply, and the PM work. Use the Go Testing program for doing this.
7. User Requests should include a Request to join the Chat Room, get and display unseen messages including PM.
8. Use the Go RPC package for implementing remote procedure calls in Go including the implementation of a client-server interface with the server by the client.
9. Register the program with an HTTP handler in the RPC package and turn the terminal program into a Web Service that handles HTTP requests through a TCP Listener. See HandleHTTP and DialHTTP in Go RPC package.
Submit the Go source code, a ReadME file with the compile and run options that you use, and submit a file containing the sequence of input strings that you use as client messages to the Chat server. Zip the files submitted into one .zip file using 7-zip.