Just a few notes from working on my mob coding app:
Milestones:
- Started this project! Created the repo, created HTML mockup for the UI, wrote the first set of project goals.
Questions:
-
Should the server ensure that the countdown timers are synced across all clients?
-
How should I set a timer on the server to control changing turns?
-
What exactly does the server need to keep track of?
-
How should I prevent a user from typing in the text box when it’s not their turn?
-
Should I throttle the amount of data/events being sent when users are typing? How well would it perform if I sent data on every keystroke?
Outlining events and functions that I’ll need:
- Event: when users connect
- Event: when a user types into the text box
- Event: when it’s time to change turns
- Event: when users disconnect
- Event: when a user changes their name
- Event: clock tick, to keep clients in sync?
- Client function: update player list, given data from server
- Client function: send text box data to server
- Client function: update text box, given data from server
- Client function: update UI when turn changes, given data from server
- Client function: update the countdown timer at a regular interval
- Server function: track elapsed time and broadcast turn change event at the right time
- Server function: receive and broadcast events based on data from clients
- Server function: broadcast events when users connect or disconnect
- Server state: keep track of list of user IDs, names, whose turn it is, who’s next, and elapsed time for each turn