Node.js遠程桌面協議實現:node-rdpjs

jopen 9年前發布 | 30K 次閱讀 Node.js 開發 node-rdpjs

Remote Desktop Protocol for Node.js

node-rdpjs 是Microsoft RDP (Remote Desktop Protocol) 協議(客戶端和服務器端)純實現。node-rdpjs只支持SSL安全層。

安裝

You can install last release node-rdpjs through npm :

npm install node-rdpjs

Or work with dev branch :

git clone https://github.com/citronneur/node-rdpjs.git
cd node-rdpjs
npm install

RDP 客戶端

創建一個簡單的rdp客戶端:

var rdp = require('rdp');

var client = rdp.createClient({ 
    domain : 'my_domain', 
    userName : 'my_username',
    password : 'my_password',
    enablePerf : true,
    autoLogin : true,
    decompress : false,
    screen : { width : 800, height : 600 },
    locale : 'en',
    logLevel : 'INFO'
}).on('connect', function () {
}).on('close', function() {
}).on('bitmap', function(bitmap) {
}).on('error', function(err) {
}).connect('XXX.XXX.XXX.XXX', 3389);

客戶端參數 :

  • domain {string} Microsoft domain
  • userName {string} Username
  • password {string} password
  • enablePerf {boolean} Active some performance features (disable wallpaper)
  • autoLogin {boolean} start session if login informations are good
  • decompress {boolean} use RLE algorrithm for decompress bitmap
  • screen {object} screen size
    • width {integer} width of screen
    • height {integer} height of screen
  • locale {string} keyboard layout
    • en qwerty layout
    • fr azerty layout
  • logLevel {string} console log level of library
    • DEBUG
    • INFO
    • WARN
    • ERROR

Use decompress parameter may decrease performance.

Client Events

List of all available events from server

connect

Connect event is received when rdp stack is connected

close

Close event is received when rdp stack is close cleanly

error

Error event is received when a protocol error happened

bitmap

Bitmap event is received for a bitmap refresh order :

  • destTop {integer} y min position
  • destLeft {integer} x min position
  • destBottom {integer} y max position
  • destRight {integer} x max position
  • width {integer} width of bitmap data
  • height {integer} height of bitmap data
  • bitsPerPixel {integer} [15|16|24|32] bits per pixel
  • isCompress {boolean} true if bitmap is compressed with RLE algorithm
  • data : {Buffer} bitmap data

Client Inputs

Client inputs are mainly user inputs (mouse and keyboard).

Mouse

client.sendPointerEvent(x, y, button, isPressed);
  • x {integer} mouse x position in pixel
  • y {integer} mouse y position in pixel
  • button {integer} [ 1 (left) | 2 (right) | 3 (middle) ]
  • isPressed {boolean} true for a pressed button event

Keyboard

client.sendKeyEventScancode(code, isPressed);
  • code {integer} scancode of key
  • isPressed {boolean} true for a key pressed event
client.sendKeyEventUnicode(code, isPressed);
  • code {integer} unicode char of key
  • isPressed {boolean} true for a key pressed event

Project

Please see mstsc.js project page to watch an exemple of node-rdpjs.

項目主頁:http://www.baiduhome.net/lib/view/home/1436337350223

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!