Общие сведения о текущих возможностях

Версия 1.0.0.0
  • Потоковая передача аудио частотой 16000Гц через кастомный IAudioHandler. Аудио дополнительно сжимается с использованием gzip. Аудио передается через отдельный WebSocketServer. Как правило, для аудио используется выделенный порт 8082.
    Каждый сэмпл аудио передается с незжатым header. В качестве Int32 значения передается sequence, в качестве Int64 - ptc (измеряется в микросекундах).
    Я так же рекомендую создать кстомный JitterBuffer для отслеживания отставания текущего пакета от последнего полученного сервера.
    Ниже представлен примерный код клмента для получения и обработки звука
    private void OnMessageReceived(MessageWebSocket sender, MessageWebSocketMessageReceivedEventArgs args)
    {
        var reader = args.GetDataReader();
        reader.ByteOrder = ByteOrder.LittleEndian;
    
        if (reader.UnconsumedBufferLength < 12) return;
        int seq = reader.ReadInt32();
        long pts = reader.ReadInt64();
    
        uint payloadLen = reader.UnconsumedBufferLength;
        byte[] buf = new byte[payloadLen];
        reader.ReadBytes(buf);
    
        var msIn = new MemoryStream(buf);
        var gzip = new GZipStream(msIn, CompressionMode.Decompress);
        var msOut = new MemoryStream();
        
        gzip.CopyTo(msOut);
        var pcm = msOut.ToArray();
    }
    Вы так же можете посетить репозиторий Браузера Линии и изучить механизм подробнее
  • Передача скриншотов браузера при вызове ChromiumWebBrowser.Paint. Скриншоты так же сжимаются с использованием gzip. Передача происходит побайтово и никак не маркируется
  • Отправка скриншота всей страницы в формате Base64 строки. Маркируется
  • Отправка сведений о текущем Uri
  • Отправка сведений об открытых страницах
  • Отправка сведений об изменении загаловка конкретной страницы
  • Отправка сведений о тексте в текущем поле ввода
  • Отправка сигнала, если ввод текста отменен страницей
  • Отправка текстового сигнала о статусе загрузки страницы LOADING/COMPLETE
  • Отправка сведений о возможности выполнить действие "Назад"
  • Отправка сведений о возможности выполнить действие "Вперед"
  • Получение от клиента контента, который следует вставить в текущий активный элемент
  • Получение запроса на отправку полного скриншота страницы (Статический режим)
  • Получение сведений о режиме обновления Staic/Dynamic
  • Получение сведений об отправке на активный элемент ввода KeyCode
  • Получение сведений об отправке на активный элемент ввода Char (Предпочтительный вариант)
  • Получение сведений о нажатии на клавиши действий
  • Получение сведений о текущей активной странице
  • Навигация. Используйте skipchk:, чтобы пропустить встроенную проверку на корректность адреса
  • Навигация назад
  • Навигация вперед
  • Изменение размера окна браузера
  • Обработка события TouchDown
  • Обработка события TouchUp
  • Обработка события TouchMove
  • Обработка запроса на отправку всех активных вкладок
  • Обработка запроса на отправку скриншота определенной вкладки
  • Обработка запроса на закрытие определенной вкладки
  • Обработка запроса на открытие URL в новой вкладке. Проверка URL на этом этапе не происходит.
  • Обработка запроса на отправку скриншота в обход событию Paint