我想知道是否有可能以阻塞的方式运行节点-ssh2中提供的方法。
我正在用节点誓言测试我的代码。
conn-test.js片段
suite = vows.describe("conn-test");
suite.addBatch({
topic: function () {
return new Connection("1.2.3.4", "root", "oopsoops");
}
"run ls": function (conn) {
conn.send("ls");
}
});conn.js片段
var ssh2 = require("ssh2");
function Connection(ip, user, pw) {
//following attributes will be used on this.send()
this.sock = new ssh2();
this.ip = ip;
this.user = user;
this.pw = pw;
}
Connection.prototype.send = function (msg) {
var c = this.sock;
//Copy the example 1 on https://github.com/mscdex/ssh2
}节点-誓言运行我的代码没有错误。然而,问题是誓言的终止比从ssh2回调更快。换句话说,我无法从ssh2获得响应。
似乎节点-异步是可能的解决方案之一。但是,我不知道如何在异步的帮助下将事件驱动的调用变成阻塞调用。
有人能帮忙吗?
-2014年4月10日更新
修正标题上的错误..。
发布于 2014-04-09 23:50:55
我以前从未使用过誓言,但根据它们的参考文献,您应该使用this.callback而不是返回值。相反,您的誓言代码看起来可能如下所示:
var ssh2 = require('ssh2'),
assert = require('assert');
suite = vows.describe('conn-test');
suite.addBatch({
topic: function() {
var conn = new ssh2.Connection(),
self = this;
conn.connect({
host: '1.2.3.4',
port: 22,
username: 'root',
password: 'oopsoops'
});
conn.on('ready', function() {
self.callback(conn);
});
},
'run ls': function(conn) {
var self = this;
conn.exec('ls', function(err, stream) {
assert(!err);
stream.on('exit', function(code, signal, coredump) {
assert(code === 0);
assert(!signal);
assert(!coredump);
self.callback();
});
});
}
});https://stackoverflow.com/questions/22658677
复制相似问题