MQTTKit

用 Swift 编写的 MQTT 客户端

Travis Swift Version license

入门指南

安装

Swift 包管理器

MQTTKit 可以使用 Swift 包管理器 安装。将 MQTTKit 添加到 Package.swift 中的依赖项列表中。

let package = Package(
    /*...*/
    dependencies: [
        .package(url: "https://github.com/arnecs/MQTTKit.git", from: "0.1.0")
    ]
    /*...*/
)

Carthage

MQTTKit 可以使用 Carthage 安装。在你的 Carthage 文件中添加以下行:

github "arnecs/MQTTKit"

手动安装

克隆项目仓库,并将其添加到你的项目中。

git clone https://github.com/arnecs/MQTTKit.git

使用方法

使用闭包来获取事件通知

public var didRecieveMessage: ((_ mqtt: MQTTClient, _ message: MQTTMessage) -> Void)?
public var didRecieveConack: ((_ mqtt: MQTTClient, _ status: MQTTConnackResponse) -> Void)?
public var didSubscribe: ((_ mqtt: MQTTClient, _ topic: String) -> Void)?
public var didUnsubscribe: ((_ mqtt: MQTTClient, _ topic: String) -> Void)?
public var didConnect: ((_ mqtt: MQTTClient, _ connected: Bool) -> Void)?
public var didDisconnect: ((_ mqtt: MQTTClient, _ error: Error?) -> Void)?
public var didChangeState: ((_ mqtt: MQTTClient, _ state: MQTTConnectionState) -> Void)?

连接到 MQTT Broker

import MQTTKit

let mqtt = MQTTClient(host: "localhost")

mqtt.didConnect = {mqtt, connected in
  // Gets called when a connack.accepted is recieved
}
// Or
mqtt.didRecieveConnack = {mqtt, response in
  // Gets callen when connack is recieved
}

mqtt.connect()

订阅和取消订阅主题

mqtt.didSubscribe = {mqtt, topic in
  // Gets called when suback is recieved
}

mqtt.didUnsubscribe  = {mqtt, topic in
  // Gets called when unsuback is recieved
}

mqtt.subscribe(to: "/my/topic")
mqtt.unsubscribe(from: "/my/topic")

发布和接收消息

let messagePayload = "Some interesting content".data(using: .utf8)!
mqtt.publish(to: "/my/topic", payload: messagePayload, qos: .QoS0, retained: false)

mqtt.didRecieveMessage = {mqtt, message in
  print(message)
}

运行测试

测试需要连接到 MQTT Broker。地址位于测试文件中。

要启动测试,请运行

swift test

或者使用 xcodebuild 为特定平台进行测试

xcodebuild clean test -scheme MQTTKit -destination "platform=macos"
xcodebuild clean test -scheme MQTTKit -destination "platform=iOS Simulator,name=iPhone 8"
xcodebuild clean test -scheme MQTTKit -destination "platform=tvOS Simulator,name=Apple TV"

许可证

本项目采用 MIT 许可证 - 详细信息请参阅 LICENSE.md 文件