Broker testleri

Tarayıcınızdan MQTT Broker Testi (Kurulum Gerektirmez)

Herhangi bir MQTT broker'ı iki dakikada tarayıcıdan test edin: güvenli WebSocket ile bağlanın, abone olun, publish edin, retained ve Last Will'i kontrol edin.

Güncellendi · 7 dk okuma

Tarayıcınızdan MQTT Broker Testi (Kurulum Gerektirmez)

Bir MQTT broker'ı tarayıcınızdan yaklaşık iki dakikada test edebilirsiniz — Mosquitto kurulumu, Python ya da yönetici yetkisi gerekmez. Online MQTT istemcisini açın, güvenli WebSocket (wss) ile bağlanın, bir topic'e abone olun, bir mesaj publish edin ve geri gelişini izleyin. Bu gidiş-dönüş çalışıyorsa broker ayaktadır, ağınızdan erişilebilirdir ve mesajları yönlendirmektedir.

Bu rehber testin tamamını adım adım anlatıyor, testi kendi broker'ınıza nasıl yönlendireceğinizi ve hazır bir testi bir ekip arkadaşınızla ya da firmware geliştiricisiyle nasıl paylaşacağınızı gösteriyor.

Tarayıcıda MQTT nasıl çalışır

Tarayıcılar ham TCP soketi açamaz; bu yüzden bir web sayfası 1883 portunda doğrudan MQTT konuşamaz. Bunun yerine MQTT over WebSockets kullanır: aynı MQTT paketleri, HTTP upgrade isteğiyle başlayan bir WebSocket bağlantısının içinde taşınır.

TaşımaTipik portURLhttps sayfasından çalışır mı?
WebSocket8083 / 8080ws://host:8083/mqttHayır — mixed content olarak engellenir
Güvenli WebSocket8084 / 8443 / 443wss://host:8084/mqttEvet
TCP1883mqtt://host:1883Yalnızca bir relay sunucusu üzerinden
TLS8883mqtts://host:8883Yalnızca bir relay sunucusu üzerinden

Test açısından iki sonuç önemlidir: broker'da bir WebSocket listener'ı etkin olmalıdır (doğru path ile — genellikle /mqtt) ve https sayfasından wss kullanmanız gerekir. TestMQTT istemcisi TCP ve TLS de sunar; tarayıcılar bu soketleri açamadığı için bağlantıyı TestMQTT sunucusu üzerinden aktarır. Bu, yalnızca TCP destekleyen bir broker'ı kontrol etmek için kullanışlıdır; ancak bağlantının bu durumda sizin ağınızdan değil relay'in ağından çıktığını unutmayın. Arka plan için MQTT over WebSockets yazısına bakın.

Adım 1 — Bağlanın

  1. testmqtt.com/client adresini açın. Protokol varsayılan olarak WSS'dir ve önerilen bir broker seçili gelir.
  2. Connect'e tıklayın. Durum bağlı olarak değişir ve log başarılı bağlantıyı (broker'ın CONNACK'ini) kaydeder.
  3. Her sekme için benzersiz bir client ID (testmqtt_xxxxxxxx) üretilir; böylece iki sekme birbirini broker'dan düşürmez.

Kendi broker'ınızı test etmek için broker listesinde Custom broker… seçeneğini seçin ve ayarları doldurun:

AlanÖrnekNotlar
ProtokolWSSWS'yi yalnızca http sayfalarından veya yerel araçlardan kullanın
Hostbroker.connectmq.comYalnızca host adı — wss:// ve port olmadan
Port8084Broker'ınızın güvenli WebSocket portu
PathmqttBroker'ın WebSocket path'iyle aynı olmalı
Kullanıcı adı / Parola$MQTT_USER / $MQTT_PASSYönetici hesabı değil, bir test kullanıcısı
MQTT sürümü3.1.1 veya 5Cihazlarınızın kullandığı sürümü test edin

Broker kendinden imzalı bir sertifika kullanıyorsa, ona güvenip güvenmeyeceğine sayfa değil tarayıcı karar verir. https://host:8084/ adresini bir sekmede bir kez açıp sertifikayı kabul edin — ya da daha iyisi, genel bir CA'dan alınmış sertifika kullanın.

Adım 2 — Abone olun ve publish edin

Başka kimsenin kullanmadığı bir topic seçin. Paylaşımlı bir broker'da test çok kalabalıktır; testmqtt/<adiniz>-<rastgele>/# gibi bir topic mesajlarınızı ayrı tutar.

  1. Subscriptions bölümünde QoS 1 ile testmqtt/demo-7f3a/# ekleyin.
  2. Publish bölümünde topic'i testmqtt/demo-7f3a/sensor yapın, Sensor JSON şablonunu seçin ya da kendi payload'unuzu yazın ve Publish'e tıklayın.
  3. Mesaj, alındı olarak işaretlenmiş şekilde listede görünür. Tüm ayrıntıları görmek için çift tıklayın: topic, QoS, retained bayrağı, boyut ve payload'un tamamı.

Publish ettiğiniz hâlde hiçbir şey görünmüyorsa, abonelik filtresinin topic ile gerçekten eşleştiğini kontrol edin — testmqtt/demo-7f3a/+ tek bir seviyeyle, # ise altındaki tüm seviyelerle eşleşir. Topic matcher bunu saniyeler içinde netleştirir; kurallar topic'ler ve wildcard'lar yazısında anlatılıyor.

Sürekli bir akış için publish panelinde bir tekrar aralığı belirleyin. Böylece bağlantıyı birkaç dakika izleyip kopmaları veya boşlukları kolayca fark edersiniz.

Adım 3 — Retained mesajları ve Last Will'i test edin

Düzgün bir broker testi tek bir mesajla sınırlı kalmaz:

  • Retained: retain açıkken testmqtt/demo-7f3a/status topic'ine publish edin. Bağlantıyı kesin, yeniden bağlanın ve tekrar abone olun — broker son retained değeri hemen teslim etmelidir. Silmek için boş bir retained payload publish edin ya da mesaj ayrıntılarındaki Clear retained message düğmesini kullanın.
  • Last Will: Settings içinde offline payload'u ile testmqtt/demo-7f3a/lwt gibi bir will topic tanımlayın. Bu topic'e abone olan ikinci bir sekme açın, sonra ilk sekmeyi bağlantıyı kesmeden kapatın. Keep alive aralığının yaklaşık 1,5 katı sonra broker will mesajını publish etmelidir. Düzgün bir Disconnect will'i tetiklemez — bu doğru davranıştır.
  • MQTT 5: Protokol sürümünü 5 yapıp yeniden bağlanın. Broker yalnızca 3.1.1 destekliyorsa Unsupported Protocol Version gibi bir CONNACK hatası alırsınız; reason code aracı her kodu açıklar.

Adım 4 — Başka bir istemciyle çapraz kontrol

Tarayıcı testi, WebSocket listener'ının çalıştığını kanıtlar. Cihazlar genellikle TCP veya TLS kullanır; döngüyü tamamlayın: tarayıcıyı abone bırakın ve bir terminalden publish edin.

Publish over TCP, watch it arrive in the browser
mosquitto_pub -h broker.connectmq.com -p 1883 \
  -t testmqtt/demo-7f3a/sensor -m '{"temp":21.5}' -q 1 -d
Or over TLS with authentication
mosquitto_pub -h broker.connectmq.com -p 8883 \
  --cafile /etc/ssl/certs/ca-certificates.crt \
  -u "$MQTT_USER" -P "$MQTT_PASS" \
  -t testmqtt/demo-7f3a/sensor -m '{"temp":21.5}' -q 1

Mesaj tarayıcıda görünüyorsa iki listener aynı broker'ı paylaşıyor ve yönlendirme taşımalar arasında çalışıyor demektir. TCP çalışıp tarayıcı çalışmıyorsa — ya da tersi —, sorun broker'ın tamamında değil, bir taşımanın listener'ında ya da ağ yolundadır.

Hazır bir testi paylaşın

Başka biriyle — bir firmware geliştiricisi, bir müşteri, bir ekip arkadaşı — hata ayıklarken, istemciyi doğru endpoint'e bağlı ve doğru topic'e abone olarak açan bir bağlantı gönderin:

Deep link
https://testmqtt.com/client?url=wss://broker.connectmq.com:8084/mqtt&topic=testmqtt/demo-7f3a/%23

url protokolü, host'u, portu ve path'i ayarlar ve otomatik bağlanır; topic aboneliği ayarlar (# karakterini %23 olarak kodlayın). İkiniz de aynı mesajları canlı görürsünüz; bu, log ekran görüntüleri alıp vermekten çok daha hızlıdır. Kimlik bilgileri hiçbir zaman bağlantıya dahil olmaz — herkes kendi bilgilerini girer.

Tarayıcı testi başarısız olduğunda

Mesaj veya belirtiOlası nedenÇözüm
WebSocket connection to 'wss://…' failedYanlış port, WebSocket listener'ı yok, firewallBroker'ın wss portunu kontrol edin; bkz. WebSocket connection failed
Bağlanıp hemen kapanıyor / HTTP 404Yanlış path (/mqtt vs /ws vs /)Listener path'ini kullanın; bkz. WebSocket path 404
"browsers block unencrypted ws:// connections"Mixed content: https sayfasından wsGeçerli sertifikayla wss kullanın
Konsolda sertifika hatasıKendinden imzalı veya süresi dolmuş sertifika, host adı uyuşmazlığıCA imzalı sertifika kullanın ya da bir sekmede bir kez kabul edin
Not authorized / Bad user name or passwordKimlik bilgileri veya ACLKullanıcıyı ve topic izinlerini kontrol edin
Bağlı ama mesaj yokFiltre eşleşmiyor ya da ACL aboneliği sessizce reddediyorFiltreyi topic matcher ile test edin; SUBACK kodlarına bakın

Tarayıcınızın geliştirici araçları ham WebSocket frame'lerini Network → WS altında gösterir; CONNECT'in gidip gitmediğini ve neyin geri geldiğini görmenin çoğu zaman en hızlı yolu budur. Chrome DevTools ile MQTT hata ayıklama adım adım anlatıyor.

Tarayıcı test istemcisini açın

Tarayıcıdan test, yapabileceğiniz en hızlı ilk kontroldür: hiçbir şey kurmanız gerekmez, her makinede çalışır ve paylaşılan bir bağlantı herkesi aynı canlı topic'e baktırır. Tarayıcıdaki gidiş-dönüş başarılı olduktan sonra TCP veya TLS ile çapraz kontrol yapın; broker'ın, listener'ların ve ağ yolunun yolunda olduğunu bilirsiniz.

Sıkça sorulan sorular

Bir tarayıcı MQTT broker'a doğrudan bağlanabilir mi?

Evet, MQTT over WebSockets ile. Tarayıcılar ham TCP soketi açamaz; bu yüzden broker'da bir WebSocket listener'ı gerekir (genellikle ws için 8083 veya 8080, wss için 8084 veya 8443; /mqtt gibi bir path ile). TCP sunan online istemciler bağlantıyı bir sunucu üzerinden aktarır.

Sayfa HTTPS ile sunulduğunda ws:// neden başarısız olur?

Tarayıcılar güvenli sayfalardan şifresiz bağlantıları engeller (mixed content). https:// ile yüklenen bir sayfa yalnızca wss:// WebSocket'leri açabilir; bu yüzden broker'ın güvenli WebSocket portunu geçerli bir sertifikayla kullanın.

Broker kimlik bilgilerini online bir MQTT istemcisine yazmak güvenli mi?

Üretim yönetici hesabı yerine, ACL'leri test topic'leriyle sınırlı özel bir test kullanıcısı kullanın. TestMQTT parolaları saklamaz, ancak en az yetkili test hesapları her araçta iyi bir uygulamadır.