A multi-player Rock, Paper, Scissors game written in Node.js.
Players are automatically created per session. To test, use two browser sessions that don't share cookies. For example, you could use a regular browser window and an incognito / private browser window.
npm i
# Start docker, which provides a MySQL database.
docker-compose up -d
# Create the MySQL schemas.
npx knex migrate:latest
# Start PM2
npx pm2 start ./pm2.config.js
- First Window
- Click Start New
- Make a choice
- Second Window
- Click an available game
- Click Join
- Make a choice
- First Window
- Reload to see result
Using HTTPie, a command-line HTTP client.
http GET :5005/api/v1/rules
http POST :5010/api/v1/players
http GET :5010/api/v1/players/1
http POST :5010/api/v1/players
http GET :5010/api/v1/players/2
http POST :5005/api/v1/games player1id=1 player2id=2
http GET :5005/api/v1/games/1
http POST :5005/api/v1/games/1/judge
http PATCH :5005/api/v1/games/1 player1choice=rock player2choice=scissors
http POST :5005/api/v1/games/1/judge
http GET :5005/api/v1/games/1
Temporary:
# Stop services.
docker-compose stop
# Turn off PM2.
npx pm2 kill
Permanent (deletes database):
# Stop and remove containers, networks, images and volumes.
docker-compose down
# Turn off PM2.
npx pm2 kill