Question: Your Name: Project Name: Chatroom Project Summary: Project will be a global chatroom where anyone who joins can communicate in the chat. New joiners will
Your Name:
Project Name: Chatroom
Project Summary: Project will be a global chatroom where anyone who joins can communicate in the chat. New joiners will not see the previous chat history. Users can break out into separate rooms.
Github link to project folder in repo:
Requirements:
A server that can handle multiple simultaneous clients
Handle sending data back and forth more so than just a simple string
Gracefully handle disconnects and server shutdowns
Provide the ability for the users to do something
Milestone :
Server can be started via IDE or command line and listen for connections
Client can be started via IDE or command line and connect to the running server
Client can send messages to the server
Server can broadcast messages to all connected clients of a particular Room
Server will implement the concept of Rooms
Clients will have some sort of identifier to show who sent each message
Clients can disconnect and reconnect without crashing the server
The Server terminating should not terminate the clients as well
Clients should receive a disconnected message
Milestone :
Server will have the functionality to switch users between Rooms
ie all start in Lobby but can then create or join existing rooms to be with a particular group
Rooms will not have cross communication
Following the payload concept begin implementing some of the core functionality
Chat system Wrap messages in payload so extra data can be sentreceived
I.e Payload message: text sender: username
Create a serverside function the processes message commands ierollflip and broadcasts the result to all clients
roll will handle two different formats
Format : roll X or X
Example: roll
let me know which value you choose to start at
Format : roll #d#
Example: roll d
flip will return heads or tails like a coin toss
Create a serverside function that processes messages to change text display thats broadcasted to all clients for this milestone just show the altered text symbols, we wont be able to see the effects until Milestone
Bold
Italics
Color at least Red, Green, Blue options or code to support color hex codes
Underline
Note: Having the user type out html tags is not valid for this feature, instead treat it like WhatsApp, Discord, Markdown, etc
Note: Each text trigger must wrap the text that you want to affect
Milestone :
Create a UI PagePanel for connecting to the server
Username dont allow spaces
Host
Port
Create a UI Page for the chatroom
List of users in the room
Text area for the chat history
Input field for typing messages
Button for sending messages
Pressing enter should also submit the button if the input field isnt empty
Results from flip and roll appear in a different format than regular chat text
Custom text display functions appear correctly in the chat area ie last feature of Milestone
Messages that precede with @username will send the message privately to the user denoted by the username
The writer and the receiver are the only two that will receive the message from the server
Its not valid to just hide it on the clientside ie data must not be sent from the server
The following commands will be implemented serverside
mute username
Prevents the user from receiving messages from the target user
unmute username
Allows the user to receive messages from the target user if they were previously muted
Milestone :
Client can export the chat history of their current session clientside
Clients mute list will persist across sessions serverside
Based on username match
Clients will receive a message when they get mutedunmuted by another user
ie Bob muted you
This message should only be sent if muted becomes unmuted or unmuted becomes mute, its not an opportunity to create a spam mechanism
The user list should update per the status of each user
Muted users appear grayed out
Last person to send a message gets highlighted
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
