2016-02-17 34 views
0

我使用Azure SDK進行節點創建客戶端應用程序以將數據發送到Azure服務總線主題。該應用運行良好,直接從我的設備連接到Azure雲。對於企業環境,設備和客戶端應用程序必須在防火牆後運行。爲客戶端節點應用程序訪問配置代理設置Azure ServiceBus和Azure SDK用於節點

+---------+  +------------+   +-------------------+ 
    | Device | <=> | HTTP Proxy | <=> | Azure SB endpoint | 
    +---------+  +------------+   +-------------------+  

Azure的SDK ServiceClient代碼顯示,它會自動使用代理設置從環境變量 -

HTTPS_PROXY=http://<proxy-server>:<proxy port>. 

我設置環境變量,例如,它沒有工作。連接失敗在SDK調用帶:

Error: tunneling socket could not be established, cause=socket hang up 

我用了「Azure的SDK換節點\實例\ SAMPLES \ sbtopics.js」與代理進行測試,它無法以同樣的方式。

我試圖修改默認代理,並沒有解決問題。 ...

var serviceBusClient = azure.createServiceBusService(azureSBSASStr); 
var defaultProxy = serviceBusClient.proxy; // get the default proxy 
var auth = 'Basic ' + new Buffer('username:password').toString('base64'); 

// override default 
defaultProxy.auth = auth; 
defaultProxy.rejectUnauthorized = false; 
defaultProxy.secureOptions = constants.SSL_OP_NO_TLSv1_2; // also used SSL_OP_NO_SSLv3 
defaultProxy.strictSSL = false; 

// set the proxy 
serviceBusClient.setProxy(defaultProxy); 

// call to Service Bus SDK API resulted proxy connection failed 
  • 我有其他節點的應用程序,通過與此相同的代理服務器類似上述HTTP選項HTTP隧道通信成功在其他雲裏。

有沒有人成功獲得Azure SDK以使節點能夠使用代理?是否有任何其他代理配置需要指定?

THX,

回答

0

據我所知,天青ServiceBus SDK的節點有一個名爲ProxyFilter過濾器,你可以看到https://github.com/Azure/azure-sdk-for-node/blob/b527caff845a0a4a28eaf08039ad6d5443d5ae54/lib/common/lib/services/filters/proxyfilter.js它的源代碼。

嘗試使用ProxyFilter爲ServiceBus客戶端設置代理,請參閱ProxyFilter的測試代碼https://github.com/Azure/azure-sdk-for-node/blob/b527caff845a0a4a28eaf08039ad6d5443d5ae54/test/common/filters/proxyfilter-tests.js以瞭解如何使用它。

希望它有幫助。最好的祝福。

+0

我跑在Azure SDK爲節點組測試 - 「NPM測試」。該測試有5個測試失敗,與我使用節點應用程序時發生的錯誤相同。 '2)servicebusservice-tests storageConnectionStringsEndpointHttpExplicit: Uncaught AssertionError:{[錯誤:無法建立隧道套接字,原因=解析錯誤]代碼:'ECONNRESET'} == null at'。 – JamesNW

+0

@JamesNW您是否設置了測試腳本所需的環境變量? –

0

通常情況下,azure節點sdk將通過使用ProxyFilter自動在環境變量中查找代理。爲了使我的作品,我在我的代碼HTTPS_PROXY設置和HTTP_PROXY變量是這樣的:

process.env.HTTPS_PROXY="http://hostname:port" 
process.env.HTTP_PROXY="http://hostname:port" 
相關問題