我使用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
是否有人成功获得Azure SDK for node以使用代理?是否需要指定其他任何代理配置?
谢谢,
答案 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套接字设置代理。