如何从公司代理

时间:2016-07-21 20:52:43

标签: javascript node.js proxy websocket

我在云中运行了一个nodejs websocket服务器,我可以从公司防火墙外的任何位置建立安全的Web套接字连接。  现在,如何在从公司代理(内部部署)后面的资源创建websocket连接时提供代理信息?我正在使用https://github.com/websockets/ws中的这个nodejs模块。

执行以下代码时出现EHOSTUNREACH错误。请注意,云资源和内部部署资源之间没有VPN连接。

**var wss = new WebSocket('wss://cloudserver:443', {
        rejectUnauthorized: false
    });**

使用下面的示例代码,我可以使用代理信息从公司代理后面的资源建立到云的http连接,但无法弄清楚如何使其与Web套接字一起工作。

    **var Http = require('http');

    var req = Http.request({
        host: 'proxy',
        port: 8080,
        method: 'GET',
        path: 'http://cnn.com/' // full URL as path
    }, function (res) {
        res.on('data', function (data) {
            console.log(data.toString());
        });
    });

    req.end()

**

我也看了下面的http://blog.vanamco.com/proxy-requests-in-node-js/,它似乎有我需要的东西,但由于我是nodejs的新手,我在这里有些迷失。

2 个答案:

答案 0 :(得分:0)

EHOSTUNREACH意味着无法找到DNS为目标服务器提供的IP地址的网络路由。

这可能是来自本地DNS服务器的DNS错误(错误的IP地址)或路由错误(错误或丢失到该IP地址的路由),或者可能是故意没有到目标地址的路由(私有网络或公司)网络阻塞事物)。

您可以通过查看是否从工作和家庭获得该主机的相同IP地址来检查DNS方面。一个简单的ping hostname将显示IP地址。如果目标服务器支持ping请求,它还会告诉您主机是否可访问。您还可以从家庭和工作中检查tracert hostname,并查看丢失的地方。

答案 1 :(得分:0)

通过使用websocket-node(https://github.com/theturtle32/WebSocket-Node/)提供代理信息,我能够连接到我的云实例 模块如下。实际的网址被替换为' xxx'出于安全原因。谢谢所有试图提供帮助的人。

var fs = require('fs');
var client = new WebSocketClient();
var tunnel = require('tunnel');
var net = require('net');

var tunnelingAgent = tunnel.httpsOverHttp({
  rejectUnauthorized: false,
  proxy: {
      host: 'xxxxxxxx',
      port: 8080,
  }
});



var requestOptions = {
    agent: tunnelingAgent,
    rejectUnauthorized: false,
    strictSSL: false,
    requestCert: false,
};

var headers = {

};


client.connect('wss://xxxxxx',null, 'xxxxxx', headers, requestOptions);