Allow clients to create new rooms to play
This commit is contained in:
50
board-server/README.md
Normal file
50
board-server/README.md
Normal file
@@ -0,0 +1,50 @@
|
||||
# WebSocket server implementation
|
||||
|
||||
This crate provides a WebSocket server for the Scrabble with numbers game.
|
||||
|
||||
## Build
|
||||
|
||||
This project uses [Cargo](https://crates.io/), so ensure you have it installed.
|
||||
|
||||
```bash
|
||||
cargo build --release
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
The server listens on port `8080` by default. You can change this by specifying a program argument:
|
||||
|
||||
```bash
|
||||
# Run a debug build on port 1234
|
||||
cargo run -- '0.0.0.0:1234'
|
||||
# Run an already built binary on the default port
|
||||
./board-server
|
||||
```
|
||||
|
||||
## Protocol
|
||||
|
||||
The server only understands certain predefined messages.
|
||||
All messages are sent as JSON strings are can only be sent by either the client or the server.
|
||||
|
||||
You can see the exact layout of the messages in the [protocol file](../board-network/src/protocol.rs).
|
||||
|
||||
Messages sent and received shouldn't contain any unnecessary indentation.
|
||||
|
||||
## Sample client
|
||||
|
||||
```js
|
||||
// Create WebSocket connection.
|
||||
const socket = new WebSocket('ws://localhost:8080');
|
||||
|
||||
// Connection opened
|
||||
socket.addEventListener('open', (event) => {
|
||||
// Create a new room, and join it it immediately with the player name "player_name"
|
||||
// The server will respond with a RoomCreated message which contains the room name
|
||||
socket.send(JSON.stringify({ CreateRoom: 'player_name' }));
|
||||
});
|
||||
|
||||
// Listen for messages
|
||||
socket.addEventListener('message', (event) => {
|
||||
console.log('Message from server', JSON.parse(event.data));
|
||||
});
|
||||
```
|
Reference in New Issue
Block a user