xpra icon
Bug tracker and wiki

Changes between Version 7 and Version 8 of NetworkProtocol


Ignore:
Timestamp:
03/28/14 12:29:11 (6 years ago)
Author:
Antoine Martin
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • NetworkProtocol

    v7 v8  
    33This page documents the types of messages that the client and server can exchange.
    44For the actual network connection see [/wiki/Network] and for the encoding and compression of the messages see [/wiki/PacketEncoding].
     5The most important packet is the first one sent, the {{{hello}}} packet, since it contains "capabilities" which determines what packets and features are supported by the other end.
     6
    57
    68* General packets that flow in both directions:
    79||= Packet Type =||= Arguments =||= Purpose =||= Actions Required =||
    8 ||hello||a dictionary containing connection options and capabilities||authentication (if required), setup of keyboard, configuration options, etc||either accept the connection and send a hello back as acknowledgement, send a challenge request or disconnect||
    9 ||ping||time to be echoed back||monitor connection state, collect latency statistics||The receiver ''must'' send a {{{ping-echo}}} back||
    10 ||ping-echo||echoed time, load average, measured latency||response to ping||none, it ''should'' be used to collect latency statistics||
    11 ||sound-data||sound buffers and associated metadata||forward sound data||the receiver ''should'' queue the sound buffer, it may drop them if desired - if so, it should tell the other end to stop sending||
    12 ||connection-lost||none||sent by the network layer when the network connection has dropped||free any resources||
    13 ||gibberish||none||sent by the network layer when the network received unparseable data, data decompression failed or decryption failed||disconnect the connection and free any resources||
     10||{{{hello}}}
     11||a dictionary containing connection options and capabilities||authentication (if required), setup of keyboard, configuration options, etc||either accept the connection and send a hello back as acknowledgement, send a challenge request or disconnect||
     12||{{{ping}}}||time to be echoed back||monitor connection state, collect latency statistics||The receiver ''must'' send a {{{ping-echo}}} back||
     13||{{{ping-echo}}}||echoed time, load average, measured latency||response to ping||none, it ''should'' be used to collect latency statistics||
     14||{{{sound-data}}}||sound buffers and associated metadata||forward sound data||the receiver ''should'' queue the sound buffer, it may drop them if desired - if so, it should tell the other end to stop sending||
     15||{{{connection-lost}}}||none||sent by the network layer when the network connection has dropped||free any resources||
     16||{{{gibberish}}}||none||sent by the network layer when the network received unparseable data, data decompression failed or decryption failed||disconnect the connection and free any resources||
    1417
    1518* Packets sent by the server
    1619||= Packet Type =||= Arguments =||= Purpose =||= Actions Required =||= Client Capability Required =||
    17 ||startup-complete||none||notifies the client that all the windows have been sent||none||notify-startup-complete||
    18 ||new-window and new-override-redirect||many||tells the client about a new regular window or override-redirect window||the client ''should'' show the new window, it should eventually send a {{{map-window}}} packet with the location of the window||none||
    19 ||new-tray||many||tells the client about a new tray window||the client ''should'' show the new system tray||system_tray||
    20 ||raise-window||window ID||the window ''should'' be raised||the client may or may not honour the request to raise the window||window.raise||
     20||{{{startup-complete}}}||none||notifies the client that all the windows have been sent||none||{{{notify-startup-complete}}}||
     21||{{{new-window}}} and {{{new-override-redirect}}}||many||tells the client about a new regular window or override-redirect window||the client ''should'' show the new window, it should eventually send a {{{map-window}}} packet with the location of the window||none||
     22||{{{new-tray}}}||many||tells the client about a new tray window||the client ''should'' show the new system tray||{{{system_tray}}}||
     23||{{{raise-window}}}||window ID||the window ''should'' be raised||the client may or may not honour the request to raise the window||{{{window.raise}}}||
     24||{{{window-move-resize}}}||window ID, new position and size||honour applications that request the window to be moved and resized||the client should move and resize the window||{{{server-window-move-resize}}}||
     25||{{{window-resized}}}||window ID and new size||the client should move and resize the window||{{{server-window-resize}}}||