Link Search Menu Expand Document

livedigital Chat API Client Integration Guide

This document describes integration with livedigital Chat API from client perspective. You can find full API methods list in Swagger spec.

Chat client app interacts with livedigital Chat API and optionally with App server depending on authentication scheme.

Chat client workflow

1. Authenticate

To start using Chat API, client should have chat user token. There are two authentication schemes described in Authentication.

2. Subscribe to instant events

When chat user is authenticated, they request a token for socket connection via GET /centrifuge-token (TODO: paste a link to swagger spec) method. User connects to Chat Socket API via Centrifuge client.

TODO: which Centrifuge channels to observe?

3. Fetch current state

After subscribing to instant events but before starting to apply incoming state changes, user must synchronize his client state to current server state.

TODO: How to fetch current state: channels and messages.

4. Handle instant events

Client receives events via Centrifuge and applies corresponding chat state changes. All incoming state changes must be applied in strict order. In general case, each incoming event represents valid state change only when applied on top of previous consistent state. Skipping or reordering events may lead to inconsistent state, which will require full resync between client and server.

Consider a case when events are applied concurrently or are enqued and applied out of original order:

Events ordering

5. Join a channel

User can send and receive messages only in channels they have previously joined. To join a channel, user calls POST /channels/join method.

6. Send a message

User sends messages via POST /messages/send method.