0

我正在尝试使用 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();
    }
}

我得到的结果是我的本地网络。

4

1 回答 1

1

要让您的应用程序访问 Secure Gateway,它只需要使用您的目的地提供的云主机:端口。要接受连接,您需要在可以访问数据库的位置运行 Secure Gateway 客户端。

例如,如果我想连接到本地机器上运行的 Mongo 数据库,我可以创建一个目标,并将资源主机名设置为localhost,资源端口设置为27017. 创建此目的地后,将为其分配一个云主机:端口(例如,cap-sg-prd-3.integration.ibmcloud.com:23432)。

如果我的应用程序通常使用类似的连接字符串连接到 Mongo mongodb://localhost:27017/myproject,我会将其更改为,mongodb://cap-sg-prd-3.integration.ibmcloud.com:23432/myproject以便通过 Secure Gateway 路由连接。

于 2017-07-12T21:33:31.377 回答