如何在Paho-MQTT中添加代理设置?
问题描述:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Client paho-mqtt MqttServer
# main.py
import paho.mqtt.publish as publish
from json import dumps
from ssl import PROTOCOL_TLSv1
import urllib2
class MqttClient():
host = 'mqtt.xyz.com'
port = '1883'
auth = {}
topic = '%s/streams'
tls = None
def __init__(self, auth, tls=None):
self.auth = auth
self.topic = '%s/streams' % auth['username']
if tls:
self.tls = tls
self.port = '8883'
def publish(self, msg):
try:
publish.single (topic=self.topic,payload=msg,hostname=self.host,
tls=self.tls,port=self.port)
except Exception, ex:
print ex
if __name__ == '__main__':
auth = {'username': 'your username', 'password': ''}
#tls_dict = {'ca_certs': 'ca_certs.crt', 'tls_version': PROTOCOL_TLSv1} # sslvers.
msg_dict={'protocol':'v2','device':'Development Device','at':'now','data':{'temp':21,'hum':58}}
client_mqtt =MqttClient(auth=auth) # non ssl version
#client_mqtt =MqttClient(auth=auth, tls=tls_dict) # ssl version
client_mqtt.publish(dumps(msg_dict))
我想我的组织的代理设置阻止了请求,所以请指导我在上面的代码中包含代理设置。
举例来说,如果地址是“proxy.xyz.com”和端口号是“0000”,我的网名是“XYZ”和密码是您没有提到你是什么样的代理的“ABC”如何在Paho-MQTT中添加代理设置?
答
谈论,但假设你想使用HTTP代理。
由于两个协议不兼容,您无法使用HTTP代理来转发原始MQTT流量。
如果您要连接的代理支持MQTT over Websockets,那么您应该能够连接现代HTTP代理,但这不适用于您发布的代码。
因此,根据您的理解,哪个代理适用于转发原始MQTT流量以打开网络 –
您可以使用SOCKS代理以及类似于此问题答案的前四行中的内容:http:// *.com/questions/2317849/how-can-i-use-a-socks-4-5-proxy-with-urllib2 – hardillb