読者です 読者をやめる 読者になる 読者になる

Pseudo Engineer

ソフトウェアの話とか書いてくよ

MQTT Client for iOS written in Swift

MQTT Clientのswift版作ったので公開。
実体はMosquittoのWrapperです。

flightonary/Moscapsule · GitHub

こんな感じで使えます。

import Moscapsule

// set MQTT Client Configuration
let mqttConfig = MQTTConfig(clientId: "cid", host: "test.mosquitto.org", port: 1883, keepAlive: 60)
mqttConfig.onPublishCallback = { messageId in
    NSLog("published (mid=\(messageId))")
}
mqttConfig.onMessageCallback = { mqttMessage in
    NSLog("MQTT Message received: payload=\(mqttMessage.payloadString)")
}

// create new MQTT Connection
let mqttClient = MQTT.invokeMqttConnection(mqttConfig)

// publish and subscribe
mqttClient.publishString("message", topic: "publish/topic", qos: 2, retain: false)
mqttClient.subscribe("subscribe/topic", qos: 2)

// disconnect
mqttClient.disconnect()

実装にあたってswiftからCをそのまま呼び出せるのでCで実装されたMosquittoを使うのは難しくありません。ただし、swiftで定義したfuncやclosureのポインターをcallbackとしてC側に渡すことはできないので、Objective-Cでブリッジさせるのがコツ。

P.S.
githubってgoogle日本語検索に引っかからないのがイマイチやんね。。。