如何删除 pty.js 中的 .on() 函数
How to remove .on() function in pty.js
我在节点中使用 pty.js,我去:
if (!global.terminal)
global.terminal = pty.spawn('ssh', [sshuser + sshhost, '-p', sshport, '-o', 'PreferredAuthentications=' + sshauth], {
name: 'xterm-256color',
cols: 80,
rows: 28
});
var term1 = global.terminal;
term1.on('data', function(data) { socket.emit('output1', data); console.log('on data: ' + data); });
现在,我从来没有 term1.end() 因为我不希望终端会话关闭,即使用户关闭浏览器也是如此。所以我保留global.terminal。但是,我注意到每当一个新的套接字连接(即我刷新浏览器)时,.on 方法就会被调用两次、三次,或者无论我刷新多少次。因为它保留了上次连接的 .on。
基本上是一种清除 .on 事件的方法 并开始一个全新的事件。
所以我正在寻找一种在创建新事件之前清除 .on 事件的方法。我不确定这是 javascript/node 还是 pty.js:
但是像这样:
term1.on('data', null); // <-- doesn't work, clear any existing '.on' functions
term1.on('data', function(data) { socket.emit('output1', data); console.log('on data: ' + data); });
可以使用方法 removeAllListeners(eventName)
删除 EventEmitter 的侦听器。你的情况看起来像这样:
term1.removeAllListeners('data');
我在节点中使用 pty.js,我去:
if (!global.terminal)
global.terminal = pty.spawn('ssh', [sshuser + sshhost, '-p', sshport, '-o', 'PreferredAuthentications=' + sshauth], {
name: 'xterm-256color',
cols: 80,
rows: 28
});
var term1 = global.terminal;
term1.on('data', function(data) { socket.emit('output1', data); console.log('on data: ' + data); });
现在,我从来没有 term1.end() 因为我不希望终端会话关闭,即使用户关闭浏览器也是如此。所以我保留global.terminal。但是,我注意到每当一个新的套接字连接(即我刷新浏览器)时,.on 方法就会被调用两次、三次,或者无论我刷新多少次。因为它保留了上次连接的 .on。
基本上是一种清除 .on 事件的方法 并开始一个全新的事件。
所以我正在寻找一种在创建新事件之前清除 .on 事件的方法。我不确定这是 javascript/node 还是 pty.js:
但是像这样:
term1.on('data', null); // <-- doesn't work, clear any existing '.on' functions
term1.on('data', function(data) { socket.emit('output1', data); console.log('on data: ' + data); });
可以使用方法 removeAllListeners(eventName)
删除 EventEmitter 的侦听器。你的情况看起来像这样:
term1.removeAllListeners('data');