ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
Acds_client

Client-side ACIP (ascii-chat IP Protocol) implementation for:

ACDS Client Protocol

Protocol Overview

Session Lifecycle (Client Perspective)

  1. Discovery (Optional): Lookup existing session by string
    • Send: SESSION_LOOKUP packet with session_string
    • Recv: SESSION_INFO packet with session metadata (no connection details)
  2. Creation (Host): Create new session and become host
    • Send: SESSION_CREATE packet with host public key + signature
    • Recv: SESSION_CREATED packet with session_id, participant_id, STUN/TURN servers
    • Server assigns participant ID and tracks session in database
  3. Join (Guest): Connect to existing session
    • Send: SESSION_JOIN packet with credentials (password or identity)
    • Recv: SESSION_JOINED packet with server address, TURN credentials
    • Server verifies credentials and reveals IP:port to authenticated client
  4. P2P Negotiation (Discovery Mode):
    • Send/Recv: WEBRTC_SDP packets for offer/answer
    • Send/Recv: WEBRTC_ICE packets for candidate exchange
    • Negotiate best connection (host election if no host exists)
  5. Disconnect: Leave session cleanly
    • Send: SESSION_LEAVE packet
    • Recv: SESSION_END notification when all participants leave

Packet Type Summary

Connection Configuration

The acds_client_config_t structure specifies:

ACIP Protocol Overview:

Primary Use Case: Connecting to ACDS (ascii-chat Discovery Service) servers for session discovery and WebRTC peer coordination.

Integration: This library is part of libasciichat and can be used by any application needing ACIP/ACDS integration.

See also
network/acip/acds.h for ACDS message structures
network/acip/protocol.h for ACIP Packet Types types and protocol version
network/acip/transport.h for transport abstraction layer
Author
Zachary Fogg me@zf.nosp@m.o.gg
Date
January 2026
Version
1.0 (ACDS Client API)