From c1d8e4f977954318dacc4af2fd08451760a5e555 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Breitbart?= Date: Fri, 1 Jul 2016 11:00:53 +0200 Subject: [PATCH] websocket buffer; requestAnimationFrame --- demo/app.js | 27 +++++++++++++++++++++++---- src/xterm.js | 5 +++-- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/demo/app.js b/demo/app.js index 8661cc6261..619956db1b 100644 --- a/demo/app.js +++ b/demo/app.js @@ -4,6 +4,9 @@ var expressWs = require('express-ws')(app); var os = require('os'); var pty = require('pty.js'); +var sendHandler = null; +var buf = ''; + app.use('/src', express.static(__dirname + '/../src')); app.use('/addons', express.static(__dirname + '/../addons')); @@ -31,10 +34,26 @@ app.ws('/bash', function(ws, req) { env: process.env }); term.on('data', function(data) { - try { - ws.send(data); - } catch (ex) { - // The WebSocket is not open, ignore + buf += data; + clearTimeout(sendHandler); + if (buf.length < 128000) { + //clearTimeout(sendHandler); + sendHandler = setTimeout( + function() { + try { + ws.send(buf); + buf = ''; + } catch (ex) { + // The WebSocket is not open, ignore + } + }, 2); + } else { + try { + ws.send(buf); + buf = ''; + } catch (ex) { + // The WebSocket is not open, ignore + } } }); ws.on('message', function(msg) { diff --git a/src/xterm.js b/src/xterm.js index 51357afbd5..aaa0ef3b6b 100644 --- a/src/xterm.js +++ b/src/xterm.js @@ -1218,8 +1218,9 @@ this._fullRefreshNext = true; } else { setTimeout(function () { - self.refresh(start, end, false); - }, 34) + requestAnimationFrame(function() {self.refresh(start, end, false);}); + //self.refresh(start, end, false); + }, 10) this._refreshIsQueued = true; } return;