如何在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代理,但这不适用于您发布的代码。

+0

因此,根据您的理解,哪个代理适用于转发原始MQTT流量以打开网络 –

+1

您可以使用SOCKS代理以及类似于此问题答案的前四行中的内容:http:// *.com/questions/2317849/how-can-i-use-a-socks-4-5-proxy-with-urllib2 – hardillb