用 Swift 编写的 MQTT 客户端
MQTTKit 可以使用 Swift 包管理器 安装。将 MQTTKit 添加到 Package.swift 中的依赖项列表中。
let package = Package(
/*...*/
dependencies: [
.package(url: "https://github.com/arnecs/MQTTKit.git", from: "0.1.0")
]
/*...*/
)
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 文件