2.4 KiB
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.