fb_height = 0,
fb_name = "",
- last_req_time = 0,
rre_chunk_sz = 100,
timing = {
['viewportDrag', 'rw', 'bool', false, 'Move the viewport on mouse drags'],
- ['check_rate', 'rw', 'int', 217, 'Timing (ms) of send/receive check'],
- ['fbu_req_rate', 'rw', 'int', 1413, 'Timing (ms) of frameBufferUpdate requests'],
-
// Callback functions
['onUpdateState', 'rw', 'func', function() { },
'onUpdateState(rfb, state, oldstate, statusMsg): RFB state update/change '],
return (new DES(passwd)).encrypt(challenge);
}
-function flushClient() {
- if (mouse_arr.length > 0) {
- //send(mouse_arr.concat(fbUpdateRequests()));
- ws.send(mouse_arr);
- setTimeout(function() {
- ws.send(fbUpdateRequests());
- }, 50);
-
- mouse_arr = [];
- return true;
- } else {
- return false;
- }
-}
-
// overridable for testing
checkEvents = function() {
- var now;
- if (rfb_state === 'normal' && !viewportDragging) {
- if (! flushClient()) {
- now = new Date().getTime();
- if (now > last_req_time + conf.fbu_req_rate) {
- last_req_time = now;
- ws.send(fbUpdateRequests());
- }
- }
+ if (rfb_state === 'normal' && !viewportDragging && mouse_arr.length > 0) {
+ ws.send(mouse_arr);
+ mouse_arr = [];
}
- setTimeout(checkEvents, conf.check_rate);
};
keyPress = function(keysym, down) {
- var arr;
-
if (conf.view_only) { return; } // View only, skip keyboard events
- arr = keyEvent(keysym, down);
- arr = arr.concat(fbUpdateRequests());
- ws.send(arr);
+ ws.send(keyEvent(keysym, down));
};
mouseButton = function(x, y, down, bmask) {
mouse_arr = mouse_arr.concat(
pointerEvent(display.absX(x), display.absY(y)) );
- flushClient();
+ ws.send(mouse_arr);
+ mouse_arr = [];
};
mouseMove = function(x, y) {
if (conf.view_only) { return; } // View only, skip mouse events
mouse_arr = mouse_arr.concat(
- pointerEvent(display.absX(x), display.absY(y)) );
+ pointerEvent(display.absX(x), display.absY(y)));
+
+ checkEvents();
};
timing.pixels = 0;
ws.send(response);
- /* Start pushing/polling */
- setTimeout(checkEvents, conf.check_rate);
+ checkEvents();
if (conf.encrypt) {
updateState('normal', "Connected (encrypted) to: " + fb_name);
switch (msg_type) {
case 0: // FramebufferUpdate
ret = framebufferUpdate(); // false means need more data
+ if (ret) {
+ ws.send(fbUpdateRequests());
+ }
break;
case 1: // SetColourMapEntries
Util.Debug("SetColourMapEntries");