Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    rfb2public

    node-rfb2

    RFB wire protocol client and server

    var rfb = require('rfb2');
    var r = rfb.createConnection({
      host: '127.0.0.1',
      port: 5900,
      password: 'secret'
    });
     
    r.on('connect', function() {
      console.log('successfully connected and authorised');
      console.log('remote screen name: ' + r.title + ' width:' + r.width + ' height: ' + r.height);
    });
     
    r.on('error', function(error) {
      throw new Error(error);
    });
     
    r.pointerEvent(100, 100, 0); // x, y, button state (bit mask for each mouse button) 
    r.keyEvent(40, 0);           // keycode, is down? 
    r.updateClipboard('send text to remote clipboard');
     
    // screen updates 
    r.on('rect', function(rect) {
       switch(rect.encoding) {
       rfb.encodings.raw:
          // rect.x, rect.y, rect.width, rect.height, rect.data 
          // pixmap format is in r.bpp, r.depth, r.redMask, greenMask, blueMask, redShift, greenShift, blueShift 
       rfb.encodings.copyRect:
          // pseudo-rectangle 
          // copy rectangle from rect.src.x, rect.src.y, rect.width, rect.height, to rect.x, rect.y 
       rfb.encodings.hextile:
          // not fully implemented 
          rect.on('tile', handleHextileTile); // emitted for each subtile 
       }
    });
     
    r.on('resize', function(rect) {
      console.log('window size has been resized! Width: %s, Height: %s', rect.width, rect.height);
    });
     
    r.on('clipboard', function(newPasteBufData) {
      console.log('remote clipboard updated!', newPasteBufData);
    });
     
    r.on('bell', console.log.bind(null, 'Bell!!'));
     
    // force update 
    // updates are requested automatically after each new received update 
    // you may want to have more frequent updates for high latency / high bandwith connection 
    r.requestUpdate(false, 0, 0, r.width, r.height); // incremental?, x, y, w, h 
     
    r.end(); // close connection 
     

    Status:

    Ready

    • pointer, keyboard, cutText, requestUpdate client messages
    • colormap, bell, cutText server messages
    • Raw FB update encoding
    • pseudoDesktopSize and copyRect pseudo rect updates
    • record/replay to/from file

    In progress:

    • Hextile encoding support
    • Server side protocol

    TODO:

    • ZRle, RRE, CoRRE, Zlib, Tight encodings
    • ARD and MS security types
    • VNC server with x11 and COMPOSITE/DAMAGE extensions

    see also:

    Bitdeli Badge

    Keywords

    install

    npm i rfb2

    Downloadslast 7 days

    106

    version

    0.2.0

    license

    none

    repository

    github.com

    last publish

    collaborators

    • avatar