71 lines
2.4 KiB
Markdown
71 lines
2.4 KiB
Markdown
# Chat Protocol
|
|
|
|
This document describes a simple chat protocol. To re-generate the source files,
|
|
run `go run ./cmd/hopp-generate examples/chat/protocol.md examples/chat/protocol`
|
|
|
|
## Messages
|
|
|
|
### 0000 Error
|
|
| Tag | Name | Type | Required |
|
|
| --: | ----------- | ------ | -------- |
|
|
| 0 | Code | U16 | Yes |
|
|
| 1 | Description | String | No |
|
|
|
|
Error is sent by a party when the other party has done something erroneous. The
|
|
valid error codes are:
|
|
|
|
- 0: General, unspecified error
|
|
|
|
The description field, if specified, determines a human-readable error to be
|
|
shown to the user. The sending party must immediately close the transaction
|
|
after this message is sent.
|
|
|
|
### 0001 Success
|
|
Success is sent by a party when it has successfully completed a task given to it
|
|
by the other party. The sending party must immediately close the transaction
|
|
after this message is sent.
|
|
|
|
### 0100 UpdateProfile
|
|
| Tag | Name | Type | Required |
|
|
| --: | -------- | ------ | -------- |
|
|
| 0 | Nickname | String | No |
|
|
|
|
UpdateProfile is sent by the client in a new transaction to update the profile
|
|
details that will be shown to other connected clients.
|
|
|
|
### 0200 Join
|
|
| Tag | Name | Type | Required |
|
|
| --: | -------- | ------ | -------- |
|
|
| 0 | Room | String | Yes |
|
|
|
|
Join is sent by the client when it wishes to join a room. It must begin a new
|
|
transaction, and that transaction will persist while the user is in that room.
|
|
Messages having to do with the room will be sent along this transaction. To
|
|
leave the room, the client must close the transaction.
|
|
|
|
### 0201 Chat
|
|
| Tag | Name | Type | Required |
|
|
| --: | -------- | ------ | -------- |
|
|
| 0 | Nickname | String | No |
|
|
| 1 | Content | String | Yes |
|
|
|
|
Chat is sent by the client when it wishes to post a message to the room. It is
|
|
also relayed by the server to other clients to notify them of the message. It
|
|
must be sent within a room transaction.
|
|
|
|
### 0300 JoinNotify
|
|
| Tag | Name | Type | Required |
|
|
| --: | -------- | ------ | -------- |
|
|
| 0 | Nickname | String | No |
|
|
|
|
JoinNotify is sent by the server when another client joins the room. It must be
|
|
sent within a room transaction.
|
|
|
|
### 0301 LeaveNotify
|
|
| Tag | Name | Type | Required |
|
|
| --: | -------- | ------ | -------- |
|
|
| 0 | Nickname | String | No |
|
|
|
|
LeaveNotify is sent by the server when another client leaves the room. It must
|
|
be sent within a room transaction.
|