From 74f9526177f0f6a10feecad8e11e8b517b3b02b4 Mon Sep 17 00:00:00 2001 From: paris Date: Thu, 18 Sep 2014 09:06:23 +0000 Subject: [PATCH] [addon attach] Implement auto-detaching on socket close/error --- addons/attach/attach.js | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/addons/attach/attach.js b/addons/attach/attach.js index e7cac84d..390d0198 100644 --- a/addons/attach/attach.js +++ b/addons/attach/attach.js @@ -25,14 +25,26 @@ bidirectional = (typeof bidirectional == 'undefined') ? true : bidirectional; this.socket = socket; - socket.addEventListener('message', function (ev) { + function _getMessage (ev) { term.write(ev.data); - }); + } + + function _sendData (data) { + socket.send(data); + } + + function _detach () { + term.off('data', _sendData); + socket.removeEventListener('message', _getMessage); + } + + socket.addEventListener('message', _getMessage); if (bidirectional) { - this.on('data', function (data) { - socket.send(data); - }); + this.on('data', _sendData); } + + socket.addEventListener('close', _detach); + socket.addEventListener('error', _detach); }; }); \ No newline at end of file