[英]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.