1.1 KiB
1.1 KiB
Overview
COMS uses a WebSocket API to communicate with its clients in JSON. In general,
packets sent to all clients end in _evt and packets sent in reply to a client
action end in _ack. Beyond that there isn't really a system.
A packet takes this general form:
{
"type": "<PacketType>",
"data": {...}
}
Data types
Packet
Type:
struct {
PacketType type;
Any data;
}
A packet.
PacketType
Type:
enum {
join,
welcome,
join_evt,
msg,
msg_evt,
name,
name_evt,
ping,
pong,
msg_ack,
name_ack,
leave_evt,
bad,
}
The type a Packet may assume.
UserID
Type: uint64_t
Uniquely identifies a user.
Name
Type: char[16]
A name of a user.
UserData
Type:
struct {
UserID id;
Name name;
}
A user.
MsgID
Type: uint64_t
Uniquely identifies a message.
MsgContent
Type: char[1024]
The content of a message.
MsgData
Type:
struct {
MsgID id;
UserData author;
MsgID parent;
MsgContent content;
time_t timestamp;
}
A message.