Javascript 节点js:无法捕获';错误';在MacOSx/Linux上的ssh2连接中

Javascript 节点js:无法捕获';错误';在MacOSx/Linux上的ssh2连接中,javascript,linux,node.js,macos,libssh2,Javascript,Linux,Node.js,Macos,Libssh2,参考上面的代码,我正在使用ssh2连接连接到设备,一切正常。我正在获取关于“就绪”、“关闭”等的控制台日志,但在发生“错误”时无法获取控制台日志 我可以在Win32位上捕获“错误”事件,但不能在MacOSx(10.9.5)或Linux(Ubuntu 12)上捕获。当我强制结束与设备的连接(比如从系统中拔出lan电缆)时,会触发“错误”事件 这是对Mac/Linux w.r.t ssh2模块的一些限制,还是我在捕获错误的方式上做了一些错误 任何指针都会非常有用 节点js版本v0.10.29 ssh

参考上面的代码,我正在使用ssh2连接连接到设备,一切正常。我正在获取关于“就绪”、“关闭”等的控制台日志,但在发生“错误”时无法获取控制台日志

我可以在Win32位上捕获“错误”事件,但不能在MacOSx(10.9.5)或Linux(Ubuntu 12)上捕获。当我强制结束与设备的连接(比如从系统中拔出lan电缆)时,会触发“错误”事件

这是对Mac/Linux w.r.t ssh2模块的一些限制,还是我在捕获错误的方式上做了一些错误

任何指针都会非常有用

节点js版本v0.10.29 ssh2版本v0.4.8在github中提出了这个问题

解决方案是使用keepaliveInterval,它的默认值是0。因此,我一直在努力为我的应用程序保持一个最佳值,结果它成功了

this.connection = new Connection(); //ssh2 connection
        async.waterfall([function(callback) {
            // some initialization code to connect
            }
        }], function(err, opts) {
            if (err) {
                callback({
                    message: 'Error during connecting to the device...',
                    detail: err
                }, false);
            } else {
                console.log('Connecting to ... ' + JSON.stringify(self.info));
                self.connection.on('ready', function() {
                    console.info('Connected... opening a shell...');
                    callback(null, true);
                }).on('error', function(err) {
                    console.error('Error during connecting to the device: ' + err);
                    callback({
                        message: 'Error during connecting to the device...',
                        detail: err
                    }, false);
                }).on('end', function() {
                    console.info("Connection ended...");
                }).on('close', function(hadError) {
                    console.info("Connection closed..." + (hadError ? " with error" : ""));
                }).connect(opts);
            }
        });