
Facilitates MQTT protocol communication, supporting multiple platforms for seamless message exchange and connectivity in distributed systems. Offers a versatile toolset for developing MQTT-based applications.
MQTT 5 for Kotlin Multiplatform, split into:
mktt-core: protocol types, properties, packets, codecsmktt-client: coroutine and Flow based client built on top of mktt-core
dependencies {
implementation("io.github.nicolasfara:mktt-core:<version>")
implementation("io.github.nicolasfara:mktt-client:<version>")
}import io.github.nicolasfara.mktt.client.MqttClient
import io.github.nicolasfara.mktt.client.PublishRequest
import io.github.nicolasfara.mktt.core.QoS
import io.github.nicolasfara.mktt.core.Topic
import io.github.nicolasfara.mktt.core.TopicFilter
import kotlinx.coroutines.flow.first
suspend fun sample() {
val client = MqttClient("localhost", 1883) {
clientId = "mktt-sample"
}
client.connect()
client.subscribe(listOf(TopicFilter(Topic("sample/topic"))))
client.publish(
PublishRequest("sample/topic") {
desiredQoS = QoS.AT_LEAST_ONCE
payload("hello")
},
)
val message = client.messages(TopicFilter(Topic("sample/topic"))).first()
println(message.payloadAsString())
client.disconnect()
client.close()
}mktt-core exposes:
kotlinx-io
mktt-client exposes:
MqttClientStateFlow<MqttConnectionState>SharedFlow<MqttPublishMessage>messages(filter) local filtering helperconnect, publish, subscribe, unsubscribe, and disconnect
mktt-core is covered by deterministic packet/property round-trip tests.mktt-client keeps fast unit tests in commonTest/jvmTest and runs broker-based checks in jvmIntegrationTest.Run unit tests:
./gradlew unitTestRun integration tests against the local Mosquitto container scaffold (mktt-client/src/jvmIntegrationTest/resources):
MKTT_RUN_INTEGRATION_TESTS=true ./gradlew integrationTestOptional public broker test (opt-in only):
MKTT_RUN_INTEGRATION_TESTS=true MKTT_RUN_REMOTE_BROKER_TESTS=true ./gradlew integrationTestMQTT 5 for Kotlin Multiplatform, split into:
mktt-core: protocol types, properties, packets, codecsmktt-client: coroutine and Flow based client built on top of mktt-core
dependencies {
implementation("io.github.nicolasfara:mktt-core:<version>")
implementation("io.github.nicolasfara:mktt-client:<version>")
}import io.github.nicolasfara.mktt.client.MqttClient
import io.github.nicolasfara.mktt.client.PublishRequest
import io.github.nicolasfara.mktt.core.QoS
import io.github.nicolasfara.mktt.core.Topic
import io.github.nicolasfara.mktt.core.TopicFilter
import kotlinx.coroutines.flow.first
suspend fun sample() {
val client = MqttClient("localhost", 1883) {
clientId = "mktt-sample"
}
client.connect()
client.subscribe(listOf(TopicFilter(Topic("sample/topic"))))
client.publish(
PublishRequest("sample/topic") {
desiredQoS = QoS.AT_LEAST_ONCE
payload("hello")
},
)
val message = client.messages(TopicFilter(Topic("sample/topic"))).first()
println(message.payloadAsString())
client.disconnect()
client.close()
}mktt-core exposes:
kotlinx-io
mktt-client exposes:
MqttClientStateFlow<MqttConnectionState>SharedFlow<MqttPublishMessage>messages(filter) local filtering helperconnect, publish, subscribe, unsubscribe, and disconnect
mktt-core is covered by deterministic packet/property round-trip tests.mktt-client keeps fast unit tests in commonTest/jvmTest and runs broker-based checks in jvmIntegrationTest.Run unit tests:
./gradlew unitTestRun integration tests against the local Mosquitto container scaffold (mktt-client/src/jvmIntegrationTest/resources):
MKTT_RUN_INTEGRATION_TESTS=true ./gradlew integrationTestOptional public broker test (opt-in only):
MKTT_RUN_INTEGRATION_TESTS=true MKTT_RUN_REMOTE_BROKER_TESTS=true ./gradlew integrationTest