Skip to content

Подключение и логин

Клиент начинает работу с CommandLoop. Остальные каналы открываются после получения access_token или при необходимости.

sequenceDiagram
    participant Client
    participant ControlWS as CommandLoop WebSocket
    participant Processor
    participant ClientContainer

    Client->>ControlWS: open WebSocket
    Client->>Processor: connect_request(login/password or token)
    Processor->>ClientContainer: AddClient(session, credentials, CommandLoop)
    ClientContainer-->>Processor: client id, connection id, access token
    Processor-->>Client: connect_response(result=OK, access_token, grants)
    Processor-->>Client: conferences_list
    Client->>Processor: contact_list / group_list / other commands

Каналы после логина

flowchart LR
    Login[CommandLoop connect_response]
    Token[access_token]
    Blob[BlobChannel connect_request with access_token]
    Media[WSMedia connect_request with access_token]

    Login --> Token
    Token --> Blob
    Token --> Media

Инварианты логина

  • access_token связывает дополнительные каналы с уже авторизованным пользователем.
  • CommandLoop остаётся источником правды по конференциям, устройствам и сообщениям.
  • WSMedia не должен пытаться логиниться логином/паролем; он подключается по access_token.
  • Один клиент может иметь несколько transport sessions, но только control session управляет lifecycle.