配置客户端节点应用程序的代理设置使用Azure SDK for Node

时间:2016-02-17 19:50:25

标签: node.js azure proxy servicebus

我使用Azure SDK for node创建客户端应用程序,以便向Azure Service Bus主题发送和接收数据。通过从我的设备到Azure云的直接连接,该应用程序运行良好。对于企业环境,设备和客户端应用程序必须在防火墙后面运行。

  +---------+        +------------+         +-------------------+
  | 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

我使用&#39; azure-sdk-for-node \ examples \ samples \ sbtopics.js&#39;用代理进行测试,它以同样的方式失败。

我尝试修改默认代理,但没有解决问题。 ...

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 for node以使用代理?是否需要指定其他任何代理配置?

谢谢,

3 个答案:

答案 0 :(得分:1)

通常,azure节点sdk将使用ProxyFilter自动在环境变量中查找代理。为了使它适用于我,我在我的代码中设置HTTPS_PROXY和HTTP_PROXY变量,如下所示:

process.env.HTTPS_PROXY="http://hostname:port"
process.env.HTTP_PROXY="http://hostname:port"

答案 1 :(得分:0)

据我所知,Azure ServiceBus SDK for Node有一个名为 protected void btnSubmit_Click(object sender, EventArgs e) { using (LoginData2Entities lg = new LoginData2Entities()) { DateTime birthdate = DateTime.Parse(tbBirth.Text); Logins l = new Logins(); l.FirstName = tbFirstName.Text; l.LastName = tbLastName.Text; l.Birthdate = birthdate; l.Email= tbEmail.Text; lg.SaveChanges(); } 的过滤器,您可以在https://github.com/Azure/azure-sdk-for-node/blob/b527caff845a0a4a28eaf08039ad6d5443d5ae54/lib/common/lib/services/filters/proxyfilter.js看到它的源代码。

尝试使用ProxyFilter为ServiceBus客户端设置代理,请在https://github.com/Azure/azure-sdk-for-node/blob/b527caff845a0a4a28eaf08039ad6d5443d5ae54/test/common/filters/proxyfilter-tests.js查看ProxyFilter的测试代码,了解如何使用它。

希望它有所帮助。最诚挚的问候。

答案 2 :(得分:0)

好像您正在使用依赖于HTTP REST API的旧版azure-sb包。如果您改用使用更快的AMQP实现的更新的@azure/service-bus软件包,则https://docs.microsoft.com/en-us/samples/azure/azure-sdk-for-js/service-bus-javascript/上有一个示例,显示了如何使用Web套接字设置代理。