Exemples de code

Swift / Kotlin : exemple MQTT

Connectez vos applications natives iOS (Swift) et Android (Kotlin) à un broker MQTT. Commencez sur le broker public gratuit, puis pointez le même code vers un broker privé et sécurisé sur ConnectMQ.

Installation
# iOS (Swift Package Manager): https://github.com/emqx/CocoaMQTT # Android (Gradle): implementation("com.hivemq:hivemq-mqtt-client:1.3.3")
Code source sur GitHubmqtt-code-samples/swift-kotlinClonez les exemples complets et prêts à l’emploi. Étoiles et pull requests bienvenues. Voir sur GitHub

1. Essayez sur le broker public gratuit

Aucun compte requis : connectez-vous à broker.connectmq.com sur le port 1883 et publiez vos premiers messages en quelques secondes.

Swift (CocoaMQTT)
import CocoaMQTT

let topic = "your-project/sensors/temperature" // Utilisez un préfixe de topic unique : tout le monde peut lire le broker public

// Connexion au broker public gratuit (aucun compte requis) (Chaque client doit avoir un client ID unique)
let mqtt = CocoaMQTT(clientID: "ios-" + UUID().uuidString, host: "broker.connectmq.com", port: 1883)
mqtt.keepAlive = 30

// Appelé une fois la connexion établie
mqtt.didConnectAck = { mqtt, _ in
    // Abonnement au topic de température
    mqtt.subscribe(topic, qos: .qos1)
    // Publication d’une mesure en JSON
    mqtt.publish(topic, withString: #"{"temperature":21.5}"#, qos: .qos1)
}
// Appelé pour chaque message reçu sur un topic abonné
mqtt.didReceiveMessage = { _, message, _ in
    print(message.topic, message.string ?? "")
}
_ = mqtt.connect()
Kotlin (HiveMQ MQTT Client)
import com.hivemq.client.mqtt.MqttGlobalPublishFilter
import com.hivemq.client.mqtt.datatypes.MqttQos
import com.hivemq.client.mqtt.mqtt5.Mqtt5Client
import java.util.UUID

fun main() {
    val topic = "your-project/sensors/temperature" // Utilisez un préfixe de topic unique : tout le monde peut lire le broker public

    // Connexion au broker public gratuit (aucun compte requis) (Chaque client doit avoir un client ID unique)
    val client = Mqtt5Client.builder()
        .identifier("android-" + UUID.randomUUID())
        .serverHost("broker.connectmq.com")
        .serverPort(1883)
        .automaticReconnectWithDefaultConfig()
        .buildBlocking()
    client.connect()

    // Appelé pour chaque message reçu sur un topic abonné
    client.toAsync().publishes(MqttGlobalPublishFilter.ALL) { p ->
        println("${p.topic}: ${String(p.payloadAsBytes)}")
    }
    // Abonnement au topic de température
    client.subscribeWith().topicFilter(topic).qos(MqttQos.AT_LEAST_ONCE).send()
    // Publication d’une mesure en JSON
    client.publishWith().topic(topic).qos(MqttQos.AT_LEAST_ONCE)
        .payload("""{"temperature":21.5}""".toByteArray()).send()
}

Broker MQTT public gratuit

Le broker public est partagé : n’importe qui peut s’abonner à vos topics. N’y faites jamais transiter de mots de passe, de données personnelles ou d’informations confidentielles.

À propos du broker MQTT public gratuit

2. Passez en production avec ConnectMQ

Pour de vrais appareils, utilisez un broker MQTT serverless privé sur ConnectMQ plutôt que le broker public : chiffrement TLS, un nom d’utilisateur et un mot de passe par appareil et un contrôle d’accès par topic, entièrement managé. Commencez avec l’offre Free, sans carte bancaire.

Remplacez YOUR_BROKER_HOST, YOUR_USERNAME et YOUR_PASSWORD par les valeurs de votre tableau de bord ConnectMQ.

Swift (CocoaMQTT)
import CocoaMQTT

let topic = "your-project/sensors/temperature"

// Connexion à votre broker ConnectMQ privé sur le port 8883 (Chaque client doit avoir un client ID unique)
let mqtt = CocoaMQTT(clientID: "ios-" + UUID().uuidString, host: "YOUR_BROKER_HOST", port: 8883)
mqtt.keepAlive = 30
// Nom d’utilisateur et mot de passe issus du tableau de bord ConnectMQ
mqtt.username = "YOUR_USERNAME"
mqtt.password = "YOUR_PASSWORD"
// TLS : le magasin CA du système vérifie le certificat du broker
mqtt.enableSSL = true

// Appelé une fois la connexion établie
mqtt.didConnectAck = { mqtt, _ in
    // Abonnement au topic de température
    mqtt.subscribe(topic, qos: .qos1)
    // Publication d’une mesure en JSON
    mqtt.publish(topic, withString: #"{"temperature":21.5}"#, qos: .qos1)
}
// Appelé pour chaque message reçu sur un topic abonné
mqtt.didReceiveMessage = { _, message, _ in
    print(message.topic, message.string ?? "")
}
_ = mqtt.connect()
Kotlin (HiveMQ MQTT Client)
import com.hivemq.client.mqtt.MqttGlobalPublishFilter
import com.hivemq.client.mqtt.datatypes.MqttQos
import com.hivemq.client.mqtt.mqtt5.Mqtt5Client
import java.util.UUID

fun main() {
    val topic = "your-project/sensors/temperature"

    // Connexion à votre broker ConnectMQ privé sur le port 8883 (Chaque client doit avoir un client ID unique)
    val client = Mqtt5Client.builder()
        .identifier("android-" + UUID.randomUUID())
        .serverHost("YOUR_BROKER_HOST")
        .serverPort(8883)
        // TLS : le magasin CA du système vérifie le certificat du broker
        .sslWithDefaultConfig()
        // Nom d’utilisateur et mot de passe issus du tableau de bord ConnectMQ
        .simpleAuth().username("YOUR_USERNAME").password("YOUR_PASSWORD".toByteArray()).applySimpleAuth()
        .automaticReconnectWithDefaultConfig()
        .buildBlocking()
    client.connect()

    // Appelé pour chaque message reçu sur un topic abonné
    client.toAsync().publishes(MqttGlobalPublishFilter.ALL) { p ->
        println("${p.topic}: ${String(p.payloadAsBytes)}")
    }
    // Abonnement au topic de température
    client.subscribeWith().topicFilter(topic).qos(MqttQos.AT_LEAST_ONCE).send()
    // Publication d’une mesure en JSON
    client.publishWith().topic(topic).qos(MqttQos.AT_LEAST_ONCE)
        .payload("""{"temperature":21.5}""".toByteArray()).send()
}

FAQ MQTT Swift / Kotlin

Comment connecter Swift / Kotlin à un broker MQTT ?

Installez CocoaMQTT (iOS) · HiveMQ MQTT Client (Android), connectez-vous à l’hôte du broker sur le port 1883 (ou 8883 avec TLS), puis abonnez-vous à un topic et publiez-y des messages. Les exemples de cette page se connectent au broker public gratuit broker.connectmq.com et à un broker ConnectMQ privé.

Existe-t-il un broker MQTT gratuit pour tester Swift / Kotlin ?

Oui. broker.connectmq.com est un broker MQTT public gratuit qui ne nécessite aucun compte. Tout le monde peut lire ses topics : utilisez-le uniquement pour vos tests, avec un préfixe de topic unique.

Comment sécuriser une connexion MQTT Swift / Kotlin ?

Connectez-vous via TLS sur le port 8883 avec un nom d’utilisateur et un mot de passe issus de votre tableau de bord ConnectMQ, et attribuez à chaque appareil ses propres identifiants et permissions de topic au lieu d’utiliser le broker public.

Broker MQTT public gratuit

Testez n’importe quel exemple sur broker.connectmq.com : sans inscription, MQTT 3.1.1 et 5, TCP, TLS et WebSocket.

À propos du broker MQTT public gratuit

MQTT serverless sécurisé pour la production

Le moment venu de connecter de vrais appareils, exécutez le même code sur un broker ConnectMQ privé et entièrement managé, avec TLS et des identifiants par appareil.

Commencer gratuitement

Votre broker MQTT privé, à quelques clics

Créez un compte, récupérez les identifiants de votre broker et connectez votre premier appareil — aucun serveur à installer, mettre à jour ou dimensionner.

MQTT sur WebSocket : connecter un navigateur à un broker MQTT avec MQTT.js

Les navigateurs ne peuvent pas ouvrir de sockets TCP bruts : les applications web parlent donc MQTT sur WebSocket. Créez un client navigateur et un client Node.js fonctionnels sur broker.connectmq.com et apprenez à corriger les erreurs de connexion les plus courantes.

9 min de lecture