# Mosquitto 客户端 *## class Mosquitto\Client* *### Mosquitto 客户端类* ~~~ constant LOG_DEBUG ~~~ 定义调试级别的日志消息 ~~~ constant LOG_INFO ~~~ 定义信息级别的日志消息 ~~~ constant LOG_NOTICE ~~~ 定义通知级别的日志消息 ~~~ constant LOG_WARNING ~~~ 定义警告级别的日志消息 ~~~ constant LOG_ERR ~~~ 定义错误级别的日志消息 ~~~ constant SSL_VERIFY_NONE ~~~ 不使用` setTlsInsecure`。不会验证服务器的身份,不能保障连接的安全。 ~~~ constant SSL_VERIFY_PEER ~~~ 使用` setTlsInsecure`。验证服务器的身份。 * * * * * ~~~ __construct([$id = null, $cleanSession = true]) ~~~ 构造函数。 Parameters: * `$id(string)` -客户端ID,如果省略或者为`null`,会随机生成一个。 * `$cleanSession (boolean)`- 如果设为` false` ,当 client 断开连接后,broker 会保留该 client 的订阅和消息,直到再次连接成功;如果设为 `true`(默认) ,client 断开连接后,broker 会将所有的订阅和消息删除。 * * * * * ~~~ setCredentials($username, $password) ~~~ 设置连接到服务器的用户名和密码。必须在`connect`之前调用. Parameters: * $username (string) -连接到代理的用户名。 * $password (string) -连接到代理的密码。 * * * * * ~~~ setTlsCertificates($caPath[, $certFile, $keyFile, $password]) ~~~ 配置基于ssl / tls客户端的证书必须在之前`connect`被调用,不能与`settlspsk`一起使用。 Parameters: * `$caPath (string)` – 指向pem编码的可信任CA证书文件的路径,或包含证书文件的目录。 * `$certFile (string) `– 可选。此客户端的pem编码证书文件的路径。 * `$keyFile (string) `–指向包含此客户端的pem编码私钥的文件的路径。如果设置了`certfile`,则为必选。 * `$password (string)` –密钥文件的密码。如果为空,则将在命令行上询问密码。 * * * * * ~~~ setTlsInsecure($value) ~~~ 配置服务器证书中服务器主机名的验证。若`$value`为`true`,不能保证你所连接的主机不是在冒充你的服务器。请勿在实际生产中使用此功能。必须在`connect`之前调用。 Parameters: * `$value (boolean) `–如果设置为`false`(默认),被执行主机名证书检查。如果设置为true,不执行主机名检查,不安全的连接。 * * * * * ~~~ setTlsOptions($certReqs, $tlsVersion, $ciphers) ~~~ 设置高级的ssl / tls选项。必须在`connect`之前调用。 Parameters: * `$certReqs (int) `– 是否验证服务器。如果是`Mosquitto\\Client::SSL_VERIFY_NONE`,禁用证书验证。如果是`Mosquitto\Client::SSL_VERIFY_PEER`(默认值),验证服务器证书。 * `$tlsVersion (string)` – 要使用的tls版本。如果为`null`,使用默认值。默认值取决于库编译的openssl的版本。openssl> = 1.0.1的可用选项是`tlsv1.2`,`tlsv1.1`和`tlsv1`。 * $cipers (string) – 描述可用密码的字符串。请参阅`openssl ciphers`工具以获取更多信息。如果为`null`,则将使用默认设置。 * * * * * ~~~ setWill($topic, $payload[, $qos = 0, $retain = false]) ~~~ 设置“遗嘱消息”,当 broker 检测到网络故障、客户端异常等问题,需要关闭某个客户端的连接时,向该客户端发布一条消息。必须在`connect`之前调用. Parameters: * $topic (string) – 发表遗嘱消息的主题。 * $payload (string) – 要发送的数据。 * $qos (int) –可选。服务质量。默认值为`0`.整数`0`,`1`或`2`。 * $retain (boolean) – 可选。默认为`false`。设置为`true`,则该消息将被保留。 * * * * * ~~~ clearWill() ~~~ 删除之前设置遗嘱消息。没有参数。 * * * * * ~~~ setReconnectDelay($reconnectDelay, $exponentialDelay, $exponentialBackoff) ~~~ 设置客户端在`Client::loopForever`中意外断开连接时的行为。如果不使用此方法的默认行为是反复尝试以1秒的延迟重新连接,直到连接成功。 Parameters: * $reconnectDelay (int) – 连续重新连接尝试之间设置延迟。 * $exponentialDelay (int) – 当启用指数回退时,在连续的重新连接尝试之间设置最大延迟 * $exponentialBackoff (bool) – 通过真正的启用指数回退 * * * * * ~~~ connect($host[, $port = 1883, $keepalive = 60, $interface = null]) ~~~ Parameters: * $host (string) – 连接的主机名 * $port (int) – 可选。 要连接的端口号。默认为1883。 * $keepalive (int) – 可选。在没有收到消息的情况下,服务器应该ping客户端的部分数量。 * $interface (string) – 可选。要为此连接绑定的本地接口的地址或主机名。 * * * * * ~~~ disconnect() ~~~ 从服务器断开。没有参数。 * * * * * ~~~ onConnect($callback) ~~~ 设置连接回调。当代理发送`connack`消息来响应连接时被触发。 Parameters: * `$callback (callable) `– 回调函数 回调应该采取以下形式的参数: Parameters: * `$rc (int) `– 来自服务器的响应代码。 * `$message (string) `– 响应代码的字符串描述。 回应码如下: | Code | Meaning | | --- | --- | |0 | 成功 | | 1 | 连接被拒绝(不可接受的协议版本) | | 2 | 连接拒绝(标识符被拒绝) | | 3 | 连接被拒绝(代理不可用) | | 4-255 | 保留以供将来使用 | * * * * * ~~~ onDisconnect($callback) ~~~ 设置断开连接回调。当服务器收到断开连接命令并断开客户端连接时,会调用此命令。 Parameters: * $callback (callable) – 回调函数 回调应该采取以下形式的参数: Parameters: * $rc (int) – 断开的原因。0表示客户端请求断开。其他任何值表示意外断开连接。 * * * * * ~~~ onLog($callback) ~~~ 设置日志记录回调。 Parameters: * $callback (callable) – 回调函数 回调应该采取以下形式的参数: Parameters: * $level (int) – 日志消息级别 * $str (string) – 消息字符串。 该级别可以是以下之一: * `Client::LOG_DEBUG` * `Client::LOG_INFO` * `Client::LOG_NOTICE` * `Client::LOG_WARNING` * `Client::LOG_ERR` * * * * * ~~~ onSubscribe($callback) ~~~ 设置订阅回调。服务器响应订阅请求时被调用。 Parameters: * $callback (callable) – 回调函数 回调应该采取以下形式的参数: Parameters: * $mid (int) – 订阅消息的消息ID。 * $qosCount (int) – 授予订阅的数量。 此功能需要返回每个订阅的授权qos,但目前不能。 * * * * * ~~~ onUnsubscribe($callback) ~~~ 设置取消订阅回调。服务器响应取消订阅请求时被调用。 Parameters: * $callback (callable) – 回调函数 回调应该采取以下形式的参数: Parameters: * $mid (int) – 取消订阅消息的消息ID * * * * * ~~~ onMessage($callback) ~~~ 设置消息回调。收到从服务器返回的消息时调用。 Parameters: * $callback (callable) – 回调函数 回调应该采取以下形式的参数: Parameters: :param Message $message: A Message object containing the message data * * * * * ~~~ onPublish($callback) ~~~ 设置发布回调。当客户端自己发布消息时调用。 Warning: 这可能会在`publish`之前调用返回消息ID,所以,你需要创建一个队列来处理中间列表。 Parameters: * $callback (callable) – 回调函数 回调应该采取以下形式的参数: Parameters: * $mid (int) –`publish` 返回的消息ID * * * * * ~~~ setMaxInFlightMessages($maxInFlightMessages) ~~~ 设置一次可以“在飞行中”的qos 1和2消息的数量。飞行中的消息是其交付流程的一部分。尝试发送进一步的消息`publish`将导致消息排队,直到飞行中的消息数量减少。 设置为0没有最大值。 Parameters: * $maxInFlightMessages (int) –最大值 * * * * * ~~~ setMessageRetry($messageRetryPeriod) ~~~ 设置重发消息之前要等待的秒数。这适用于发布qos> 0的消息。可能随时被调用。 Parameters: * $messageRetryPeriod (int) –重发间隔 * * * * * ~~~ publish($topic, $payload[, $qos = 0, $retain = false]) ~~~ 发布主题消息。 Parameters: * $topic (string) – 要发表的主题 * $payload (string) – 消息体 * $qos (int) – 服务质量,值`0,``1`或`2` * $retain (boolean) – 是否保留此消息,默认为`false` Returns: 服务器返回该消息ID(警告:消息ID并不是唯一的)。 Return type: int * * * * * ~~~ subscribe($topic, $qos) ~~~ 订阅一个主题。 Parameters: * $topic (string) – 要订阅的主题。 * $qos (int) – 服务质量 Returns:订阅消息的消息ID,所以这可以在`onsubscribe`回调中匹配。 Return type:int * * * * * ~~~ unsubscribe() ~~~ 取消订阅。 Parameters: * $topic (string) – 主题。 * $qos (int) – 服务质量 Returns:订阅消息的消息ID,所以这可以在`onsubscribe`回调中匹配。 Return type: int * * * * * ~~~ loop([$timeout = 1000]) ~~~ 客户端主网络循环,必须调用该函数来保持 client 和 broker 之间的通讯。收到或者发送消息时,它会调用相应的回调函数处理。当 QoS>0 时,它还会尝试重发消息。 Parameters: * $timeout (int) – 可选。 等待网络活动的毫秒数。传递0即时超时。默认为1000。 * * * * * ~~~ loopForever([$timeout = 1000]) ~~~ 在无限的阻塞循环调用`loop()`,将根据需要调用回调。这将处理重新连接,如果连接丢失。调用`disconnect`在回调断开,并从循环中返回。或者,调用`exitloop`退出循环而不断开。您将需要再次重新进入循环以保持连接。 Parameters: * $timeout (int) – 可选。 等待网络活动的毫秒数。传递0即时超时。默认为1000。 * * * * * ~~~ exitLoop() ~~~ 退出`loopforever`事件循环而不断开连接。你将需要重新进入循环以保持连接。 * * * * *