Files
coms/API.md
2026-02-28 15:59:03 -05:00

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.