mirror of
https://github.com/BlazingGames/blazing-games-plugin.git
synced 2025-02-03 21:26:41 -05:00
66 lines
2 KiB
Markdown
66 lines
2 KiB
Markdown
|
# Websocket Protocol
|
||
|
|
||
|
JSON format (for both serverbound and clientbound):
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"type": "...",
|
||
|
"payload": {}
|
||
|
}
|
||
|
```
|
||
|
|
||
|
You are expected to compress your messages with gzip when sending messages. Recieved messages are also gzipped.
|
||
|
|
||
|
## Types (common keys)
|
||
|
|
||
|
If a property is described as a "common key" in a comment, it is a property in the list below.
|
||
|
|
||
|
**actioner**: the minecraft uuid of the user who did the action.
|
||
|
|
||
|
**uuid**: the minecraft uuid of the user connected
|
||
|
|
||
|
**display**: the minecraft username of the user connected
|
||
|
|
||
|
**x**: index of the character the cursor is on. 0 is before the first char, 1 is after the first char, 2 is after the second char, and so on
|
||
|
|
||
|
**y**: line the cursor is on. starts at 1 (the first line)
|
||
|
|
||
|
**timeout**: number of seconds until this client disconnects due to an expried token
|
||
|
|
||
|
## Disconnect codes
|
||
|
|
||
|
* 1000: room closed by admin (clientbound), user left room (serverbound)
|
||
|
* 1001: server is shutting down or restarting (clientbound), tab/app/etc closed (serverbound)
|
||
|
* 1009: message is too large (bidirectional)
|
||
|
* 1011: unresolved error (bidirectional)
|
||
|
* 1014: bad gateway (clientbound)
|
||
|
* 3000: bad authorization header, or authorization expired (clientbound)
|
||
|
* 3003: no permissions (clientbound)
|
||
|
* 3008: keepalive timeout (bidirectional)
|
||
|
|
||
|
## Handshake
|
||
|
|
||
|
Use the following headers when connecting to the wss:
|
||
|
* `Authorization`: `Bearer ___` where `___` is the JWT given to the app by the blazing api.
|
||
|
* `Blazing-Computer-Id`: set to the id of computer that you want to join the room of
|
||
|
|
||
|
## Keepalive / heartbeat
|
||
|
|
||
|
Whenever you recieve a `PING`, you should respond with a `PONG`: this is part of the websocket protocol, not this protocol.
|
||
|
|
||
|
Your websocket client may already do this for you. If you're unsure, check your client's documentation.
|
||
|
|
||
|
## User list update: `usrupd` (clientbound)
|
||
|
|
||
|
**Clientbound**: Sent when a user joins or leaves. The format is as follows:
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"actioner": "84a33aad-bacf-40b4-a1b5-910300e7e3fc", // common key
|
||
|
"type": true // true if join, false if leave
|
||
|
}
|
||
|
```
|
||
|
|
||
|
|
||
|
## tbd
|