首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用来自azure sdk的MQTT协议的应用程序不能在企业代理后面工作

使用来自azure sdk的MQTT协议的应用程序不能在企业代理后面工作
EN

Stack Overflow用户
提问于 2019-05-21 04:23:25
回答 1查看 171关注 0票数 1

在这件事上我是新手,我不知道为什么我的应用程序只在一个开放的网络中工作和运行,当在代理后面时,我会有一个返回错误。我正在使用raspberry zero,带有raspbian Stretch,使用azure-iot-sdk-python和proxy squid

我已经尝试过了:

代理允许HTTPS连接,并且所有端口都可用,并且没有任何限制和地址*。将azure-devices.net放在

代码语言:javascript
复制
$ nano / etc / squid / whitelist

除此之外,我在操作系统中设置了代理,raspbian Stretch在

代码语言:javascript
复制
$ nano / etc / environment

配置如下:

导出http_proxy = "http://192.168.2.254:3128/

导出https_proxy = "https://192.168.2.254:3128/

导出no_proxy =“本地主机,127.0.0.1”

而且还在

代码语言:javascript
复制
$ nano ~ / .bashrc

导出http_proxy :3128

导出https_proxy = https: //192.168.2.254:3128

导出no_proxy =本地主机,127.0.0.1

和,

代码语言:javascript
复制
$ nano /etc/apt/apt.conf.d/90proxy

获取::http ::Proxy "http://192.168.2.254:3128/";

获取::https ::Proxy "https://192.168.2.254:3128/";

代码语言:javascript
复制
from iothub_client import IoTHubClient, IoTHubTransportProvider, IoTHubMessage
import time

CONNECTION_STRING = "HostName=******.azure-devices.net;DeviceId=***;SharedAccessKey=*********"
PROTOCOL = IoTHubTransportProvider.MQTT


def send_confirmation_callback(message, result, user_context):
    print("Confirmation received for message with result = %s" % (result))


if __name__ == '__main__':
    client = IoTHubClient(CONNECTION_STRING, PROTOCOL)
    message = IoTHubMessage("test message")
    client.send_event_async(message, send_confirmation_callback, None)
    print("Message transmitted to IoT Hub")

    while True:
        time.sleep(1)

Error: File: /usr/sdk/src/c/c-utility/adapters/socketio_berkeley.c Func: lookup_address_and_initiate_socket_connection Line: 282 Failure: getaddrinfo failure -3.
Error: File: /usr/sdk/src/c/c-utility/adapters/socketio_berkeley.c Func: socketio_open Line: 765 lookup_address_and_connect_socket failed
Error: File: /usr/sdk/src/c/c-utility/adapters/tlsio_openssl.c Func: on_underlying_io_open_complete Line: 760 Invalid tlsio_state. Expected state is TLSIO_STATE_OPENING_UNDERLYING_IO.
Error: File: /usr/sdk/src/c/c-utility/adapters/tlsio_openssl.c Func: tlsio_openssl_open Line: 1258 Failed opening the underlying I / O.
Error: File: /usr/sdk/src/c/umqtt/src/mqtt_client.c Func: mqtt_client_connect Line: 1000 Error: io_open failed
Error: File: /usr/sdk/src/c/iothub_client/src/iothubtransport_mqtt_common.c Func: SendMqttConnectMsg Line: 2122 failure connecting
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-21 05:04:21

您不能将HTTP代理与(本地) MQTT一起使用,它们是两个完全独立的协议。

如果您可以在WebSockets上使用MQTT,那么您应该能够使用HTTP代理,因为WebSockets最初是通过升级HTTP连接来建立的。

如果您的网络上有可用的SOCKS代理,那么您可以将其与本机MQTT一起使用。以下问题提供了有关如何在Python中使用SOCKS代理的提示。How can I use a SOCKS 4/5 proxy with urllib2?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56227683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档