Объяснение API

Эту страницу нужно дополнить и упростить. Вы можете внести свой вклад, изменив страницу на репозитории этого сайта

Типы данных и их назначение

В этом разделе перечислены стандартные типы данных из пространства имён System.Net.WebSockets в .NET Framework 4.8. Для получения дополнительных сведений о возможных типах данных и их назначении смотрите официальную документацию. Ради упрощения в последующих примерах определения System.Net.WebSockets опущены.
При подключении к основному серверу:
  • WebSocketMessageType.Binary используется для передачи видео при срабатывании события Paint или пользовательском запросе на получение скриншота страницы.
    Данные передаются в виде немаркированного массива байтов.
    Данные могут быть сжатыми при помощи GZip или отправлены без сжатия. На это влияет настройка VideoStreamSettings/UseVideoGzipCompress в файле settings.xml
  • WebSocketMessageType.Text используется для передачи текстовых сообщений. Текстовые сообщения содержат JSON-данные, которые могут содержать как данные о состоянии браузера, так и некоторые изображения, которые имеют маркировку.
При подключении к серверу для передачи аудио:
  • WebSocketMessageType.Binary используется для передачи аудио данных. Данные передаются в виде маркированного массива байтов.
    Независимо от настроек, передаваемый пакет всегда содержит заголовок фиксированного размера 12 байт, который состоит из двух полей:
    • uint (4 байта) — порядковый номер пакета (32-битное целое)
    • ulong (8 байт) — временная метка в наносекундах (64-битное целое)
    После заголовка идёт поток звуковых PCM-данных.
    Частота звука может быть снижена для экономии данных. За это отвечает настройка AudioStreamSettings/AudioSampleRate и AudioStreamSettings/UseAudioResampling в файле settings.xml.
    Данные могут быть сжатыми при помощи GZip или отправлены без сжатия. На это влияет настройка AudioStreamSettings/UseAudioGzipCompress в файле settings.xml

Пакет с текстовыми данными

Пакет имеет следующий формат:
{
    PType: int32|string,  // тип пакета
    PData: string,        // данные пакета в формате строки. Это может быть JSON-строка, 
                          // которая содержит данные о состоянии браузера или изображение с маркировкой или
                          // может быть обычной строкой, которая содержит текстовое сообщение.
}
В качестве PType могут использоваться следующие значения, в зависимости от места назначения пакета.
Если пакет был отправлен с сервера на клиент и PType является int32:
  • 0 (NavigatedUrl) — Пакет с данными о текущем URL
  • 1 (TextInputContent) — Пакет с данными о текущем контенте в активном поле ввода
  • 2 (TextInputSend) — Пакет с данными об отправленном в поле ввода текста (Не используется)
  • 3 (TextInputCancel) — Пакет без данных. Обозначает, что поле перестало существовать и/или более не является активным
  • 4 (LoadingStateChanged) — Пакет с данными о текущем состоянии загрузки страницы. Содержит информацию в виде string с возможными значениями LOADING/COMPLETE первое значение означает, что страница сейчас загружается, а второе, что загрузка завершена
  • 5 (OpenPages) — Пакет с данными о текущих открытых страницах. Содержит строку. В качестве сепаратора используется символ ;. У каждой вкладки есть 2 параметра, разделенных символом |. Нулевой параметр — это заголовок страницы (string), а первый — это ID страницы (Int64).
  • 6 (EditOpenTabTitle) — Пакет с данными о текущем заголовке страницы. Содержит строку с данными об уникальном ID (Int64) [1 элемент] и новым заголовком (string) [0 элемент]. Параметры разделяются символом |.
  • 7 (IsClientCanSendGoBackRequest) — Пакет с данными о возможности вернуться на страницу назад. Содержит string с возможными значениями true/false
  • 8 (IsClientCanSendGoForwardRequest) — Пакет с данными о возможности перейти на страницу вперед. Содержит string с возможными значениями true/false
  • 9 (Handshake) — Пакет с данными о сервере и поддерживаемыми функциями. Содержит HandshakePacket
    Структура HandshakePacket:
    • ServerVersion string: Текущая версия сервера
    • Features string[]: Текущие возможности сервера
  • 10 (ConnectionState) — Пакет с данными о текущем сертификате подключения к сайту. Содержит ConnectionSecurePacket
    Структура ConnectionSecurePacket:
    Посмотрите дополнительные сведения о ConnectionSecurePacket

Кастомные значения PType, которым не присвоен id. Является string:
  • FullPageScreenshot
    • ChunkIndex int — индекс текущего чанка (0-based), указывает порядок фрагмента в наборе.
    • TotalChunks int — общее количество чанков, на которое разбит скриншот.
    • Data string — строка с данными изображения в Base64 (GZip не применяется).
  • TabScreenshot
    • TabId long — индекс вкладки, для которой необходимо обновить изображение.
    • Data string — Base64 строка с данными о изображении (GZip не применяется)
Обратите внимание: необходимо учитывать, что PType может быть как int32, так и string. Вам нужно сделать проверку на тип данных, чтобы избежать ошибок при обработке пакетов.

Для FullPageScreenshot и TabScreenshot нет настроек сжатия, однако вы можете изменить качество создаваемых изображений. На это влияет настройка VideoStreamSettings/FullPageScreenshotQuality в файле settings.xml

Если пакет был отправлен с клиента на сервер [PType всегда является int32]:
  • 0 (Navigation) — Позволяет отправить string URL или string текст для поиска для открытия в активной вкладке. Вы можете использовать префикс skipchk:, чтобы пропустить проверку на валидность URL и в любом случае открыть страницу. Если вы отправите текст без префикса, то будет выполнена проверка на валидность URL. Если URL не валиден, то будет открыт поиск. Вы можете изменить поисковую систем, которая будет использоваться для поиска, если URL не валиден.
    На это влияет настройка BrowserSettings/SearchSystem в файле settings.xml
  • 1 (SizeChange) — Позволяет изменить размер окна браузера на новый Windows.Foundation.Size. В качестве параметров передает int Width и int Height.
    Размер будет умножен на целочисленный scalingFactor.
    На это влияет настройка VideoStreamSettings/ScalingFactor в файле settings.xml
  • 2 (TouchDown) — Позволяет отправить событие касания экрана в виде PointerPacket
  • 3 (TouchUp) — Позволяет отправит событие отпускания касания экрана в виде PointerPacket
  • 4 (TouchMoved) — Позволяет отправит событие отпускания касания экрана в виде PointerPacket
    Структура PointerPacket:
    • px double — позиция касания по X
    • py double — позиция касания по Y
    • id uint — уникальный идентификатор события касания
  • 5 (ACK) — Позволяет отправить ACK пакет на сервер. Сервер не предпринимает никаких действий при получении этого пакета
  • 6 (Frame) — Сервер не предпринимает никаких действий при получении этого пакета
  • 7 (TextInputSend) — Позволяет отправить string в текущий активный элемент документа, нажимает клавишу 0x0D для мнгновенного ввода данных
  • 8 (NavigateForward) — Заставляет браузер перейти на страницу вперед, если это возможно
  • 9 (NavigateBack) — Заставляет браузер перейти на страницу назад, если это возможно
  • 10 (SendKey) — Позволяет отправить KeyCode int в активный элемент ввода на странице. Более гибкий, чем SendKeyCommand
  • 11 (RequestFullPageScreenshot) — Используется для отправки запроса скриншота полной страницы (Статический режим). Не принимает данных.
  • 12 (ModeChange) — Позволяет отправить string с режимом обновления Static/Dynamic
  • 13 (SetActivePage) — Позволяет выбрать активную вкладку с long Id. Заставляет сервер мгновенно отправить новый снимок только что активированной вкладки
  • 14 (GetTabsOpen) — Заставляет сервер отправить все открытые вкладки на клиент
  • 15 (CloseTab) — Позволяет закрыть вкладку с long Id. Если после закрытия вкладки других вкладок не останется, то моментально будет открыта новая с FirstRunUrl
    На это влияет настройка BrowserSettings/FirstRunUrl в файле settings.xml
  • 16 (RequestTabScreenshot) — Запрашивает скриншот для вкладки с конкрентным long Id
  • 17 (OpenUrlInNewTab) — Позволяет открыть URL в новой вкладке. Проверка на валидность не проводится
  • 18 (NewScreenShotRequest) — Запрашивает принудительную отправку скриншота на клиент
  • 19 (IsCanGoBack) — Запрашивает у сервера информацию о возможности перейти на страницу назад. Сервер не предпринимает никаких действий при получении этого пакета
  • 20 (IsCanGoForward) — Запрашивает у сервера информацию о возможности перейти на страницу вперед Сервер не предпринимает никаких действий при получении этого пакета
  • 21 (SendKeyCommand) — Позволяет отправить конкретную клавишу действия на сервер. В качестве данных используется string допустимые значения: Enter/Backspace. Является альтернативой SendKey
  • 22 (SendChar) — Позволяет отправить char в активный элемент ввода на странице. В качестве данных используется KeyCharPacket.
    Структура KeyCharPacket:
    • JSONData string буква, которую необходимо отправить
    • Shift bool активировать ли клавишу Shift при вводе символа
    • Ctrl bool активировать ли клавишу Ctrl при вводе символа
    • Alt bool активировать ли клавишу Alt при вводе символа
    • Layout string: позволяет указать раскладку, которую следует использовать при вводе символа. Раскладка должна соответствовать формату ll-RR (язык-регион) или ll, если у языка нет кода региона, например, ru.
  • 23 (RequestCert) — Запрашивает у сервера информацию о сертификате активного сайта