我正在尝试使用 SecureGateway 将我的 NodeJS 应用程序连接到 Oracle DB,但不起作用。
我执行了测试,当我运行时
var exec = require('child_process').exec;
var sys = require('sys');
function puts(error, stdout, stderr) { sys.puts(stdout) }
exec("ping 192.168.10.8", puts);
为了测试我的连接,我没有结果。所以我认为不要在我的应用程序和我的网关之间创建连接。
当我在 DataConnect 中运行时,工作正常。
我require('bluemix-secure-gateway')用于从我的服务器获取信息。
用于创建隧道的函数是
const tls = require('tls');
const net = require('net');
var creations = 0;  // a running count of the number of open connections, when it becomes 0, the tunnel is closed.
var server;  // a server listening for certificate requests from the gateway server 
exports.create = function(port, options, callback) {
    if(creations == 0) {
        creations++;
        //server not currently running, create one
        server = net.createServer(function (conn) {
            connectFarside(conn, options, function(err, socket) {
                socket.pipe(conn);
                conn.pipe(socket);
            });
        });
        server.listen(port, function(){
            callback();
        });
    } else{
        //server already running
        creations++;
        callback()
    }
};
function connectFarside(conn, options, callback) {
    try {
        var socket = tls.connect(options, function() {
            callback(null, socket);
        });
        socket.on('error', function(err){
            console.log('Socket error: ' + JSON.stringify(err));
        });
    } catch(err) {
        callback(err);
    }
};
exports.close = function(){
    creations--;
    if(creations == 0){
        // close the server if this was 
        // the only connections running on it
        server.close();
    }
}
我得到的结果是我的本地网络。