使用 SecureGateway 将 NodeJS 应用程序与 OracleDB 连接

Connecting NodeJS app with OracleDB using SecureGateway

我正在尝试使用 SecureGateway 将我的 NodeJS 应用程序连接到 Oracle 数据库,但不起作用。

我执行了测试,当我 运行

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 中 运行ning 时,工作正常。

我使用 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();
    }
}

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

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

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

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