簡體   English   中英

如何從公司代理后面的位置打開到雲的Websocket連接

[英]How do I open a websocket connection to cloud from location behind corporate proxy

我有一個在雲中運行的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的新手,所以我在這里有些迷失。

EHOSTUNREACH意味着找不到到DNS為目標服務器提供的IP地址的網絡路由。

這可能是來自本地DNS服務器的DNS錯誤(錯誤的IP地址),也可能是路由錯誤(錯誤地或丟失了指向該IP地址的路由),或者可能是故意沒有到目標地址的路由(專用網絡或公司網絡阻止了此事) )。

您可以通過查看工作和家庭中該主機的IP地址是否相同來檢查DNS方面。 一個簡單的ping hostname名將為您顯示IP地址。 如果目標服務器支持ping請求,它還將告訴您主機是否可訪問。 您還可以在家庭和工作場所檢查tracert hostname ,並查看丟失的地方。

通過使用如下所示的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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM