python mqtt tls_large-cat's blog

安装

首先安装paho-mqtt模块:

pip install paho-mqtt

按照官网的说法,该模块支持Python 2.7.9+ 或 3.5+。如果Py版本不对应,有可能无法使用。

simple  demoimport paho.mqtt.client as mqtt

# The callback for when the client receives a CONNACK response from the server.

def on_connect(client, userdata, flags, rc):

print("Connected with result code "+str(rc))

# Subscribing in on_connect() means that if we lose the connection and

# reconnect then subscriptions will be renewed.

client.subscribe("$SYS/#")

# The callback for when a PUBLISH message is received from the server.

def on_message(client, userdata, msg):

print(msg.topic+" "+str(msg.payload))

client = mqtt.Client()

client.on_connect = on_connect

client.on_message = on_message

client.connect("mqtt.eclipse.org", 1883, 60)

# Blocking call that processes network traffic, dispatches callbacks and

# handles reconnecting.

# Other loop*() functions are available that give a threaded interface and a

# manual interface.

client.loop_forever()

API说明

Client(class)

可以通过利用Client类或其子类来实例化client对象,通常的用法如下:创建一个client实例

调用某一个connect*()函数连接到一个broker(mqtt服务器),并且触发对应的回调函数

调用某一个 loop*()函数和broker服务器保持网络连接

利用 subscribe() 来订阅主题并接受消息

利用publish() 来发布消息broker服务器

利用disconnect()来和 broker服务器断开连接

类初始化说明:Client(client_id="", clean_session=True, userdata=None, protocol=MQTTv311, transport="tcp")

client_id:

唯一的客户端ID,让服务器可以区分不同的客户端。如果为空或者None,则系统自动生成。

clean_session :

布尔量,用来指定客户端的类型。为True时,如果该客户端与服务器断开连接,服务器将清除该客户端的所有连接信息;

如果为False,与服务器断开连接后服务器依然会保留客户端的连接信息,消息队列等。

userdata :

pass

protocol :

选择mqtt协议的版本,MQTTv31或MQTTv311。

transport :

指定传输方式,“websockets” 或者“tcp“

在类初始化之后还可以重新初始化:reinitialise(client_id="", clean_session=True, userdata=None)

reinitialise函数和初始化函数有同样的参数。

选项设置函数

下面的这些函数所对应选项可以修改客户端的某些默认的行为,它们大多数必须要在客户端建立连接之前进行设置。

MAX_INFLIGHT_MESSAGES_SET():max_inflight_messages_set(self, inflight)

设置可以同步通过其网络流的 QoS > 0的最大消息数,默认值为20。数值增加会消耗更多的内存,但是可以增加吞吐量。

Qos保障设计

由通信中的报文标识符( Packet Identifier)传达。Qos = 0: At most once delivery一次数据交换: Publish

Qos = 1: At least once delivery两次数据交换: Publish, Pubrec

Qos = 2: Exactly once delivery四次数据交换: Publish, Pubres, Pubrel, Pubcomp

来源:https://www.jianshu.com/p/31a7a69f9438

MAX_QUEUED_MESSAGES_SET()max_queued_messages_set(self, queue_size)

设置输出消息队列中可以挂起的(QoS> 0时)最大输出消息数(消息队列的大小)。 默认值为0,表示无限制。当队列已满时,将丢弃后面传出消息。

MESSAGE_RETRY_SET()message_retry_set(retry)

如果服务器未响应时,以retry秒为时间间隔尝试重发(QoS> 0)消息。 默认情况下,此设置为5秒。通常不需要更改。

WS_SET_OPTIONS()ws_set_options(self, path="/mqtt", headers=None)

设置websocket连接选项。仅当将transport =“ websockets”传递到Client()构造函数中时,才使用这些选项。

path

服务器上mqtt访问路径。

headers

指定那些应该附加到标准websocket header的额外header列表的字典,或者是采用正常websocket header并返回带有一组header的新字典以连接到可调用的服务器。

必须在connect *()之前调用。

TLS_SET()tls_set(ca_certs=None, certfile=None, keyfile=None, cert_reqs=ssl.CERT_REQUIRED,

tls_version=ssl.PROTOCOL_TLS, ciphers=None)

配置网络加密和身份验证选项。启用SSL / TLS支持。

//20201015更新

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值