This page is translated into your preferred language using AI. You can help improve the translation of this wiki! Visit the wiki’s repo

Overview of Current Capabilities

Version 1.0.0.0
  • Streaming audio at 16 000 Hz via a custom IAudioHandler. Audio is additionally compressed using gzip and transmitted over a dedicated WebSocketServer, typically on port 8082.
    Each audio sample is sent with an uncompressed header: an Int32 sequence followed by an Int64 ptc timestamp (in microseconds).
    It is recommended to implement a custom JitterBuffer to track packet lag relative to the last received packet.
    Below is an example client implementation for receiving and processing audio:
    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();
    }
    You can also visit the Line Browser repository for more details.
  • Sending browser screenshots when ChromiumWebBrowser.Paint is called. Screenshots are compressed with gzip, sent byte-by-byte, and unmarked.
  • Sending full-page screenshots as Base64 strings (marked).
  • Sending current URI information.
  • Sending information about open pages.
  • Sending information about a specific page title change.
  • Sending information about the text in the current input field.
  • Sending a signal if text input was canceled by the page.
  • Sending a text signal about page load status LOADING/COMPLETE.
  • Sending information about back-navigation availability.
  • Sending information about forward-navigation availability.
  • Receiving content from the client to insert into the current active element.
  • Receiving a request to send a full-page screenshot (static mode).
  • Receiving information about update mode Static/Dynamic.
  • Receiving information about sending a KeyCode to the active input element.
  • Receiving information about sending a Char to the active input element (preferred option).
  • Receiving information about action key presses.
  • Receiving information about the current active page.
  • Navigation. Use skipchk: to skip built-in URL validation.
  • Navigate back.
  • Navigate forward.
  • Resize browser window.
  • Handling TouchDown event.
  • Handling TouchUp event.
  • Handling TouchMove event.
  • Handling request to send all active tabs.
  • Handling request to send screenshot of a specific tab.
  • Handling request to close a specific tab.
  • Handling request to open URL in a new tab (no validation at this stage).
  • Handling request to send screenshot bypassing the Paint event.