Broker testleri

Android ve iOS ile MQTT Broker Testi

Android veya iOS telefondan MQTT broker nasıl test edilir: WSS üzerinden tarayıcı istemcisi, MQTT uygulamaları, Termux, emülatörler ve mobil ağ tuzakları.

Güncellendi · 7 dk okuma

Android ve iOS ile MQTT Broker Testi

Bir MQTT broker'ı telefondan test etmenin en hızlı yolu hiçbir uygulama gerektirmez: Android'de Chrome'da ya da iOS'ta Safari'de online MQTT istemcisini açın, güvenli WebSocket (wss) ile bağlanın, abone olun ve publish edin. Daha derin testler için — 1883'te ham TCP, 8883'te TLS, arka plan davranışı — yerel bir MQTT uygulaması veya cihaz üzerinde bir terminal kullanın. Bu rehber her yaklaşımı ve yalnızca mobilde ortaya çıkan ağ tuzaklarını ele alıyor.

Neden telefondan test etmeli?

Ofis Wi-Fi'ına bağlı dizüstünüz, kullanıcılarınızın bulunduğu yer değildir. Mobil test, masaüstü testin yanıtlayamayacağı soruları yanıtlar:

  • Broker yalnızca ofis IP'nizden değil, mobil ağlardan gelen bağlantıları da kabul ediyor mu?
  • Operatör NAT'ı ve boşta kalma zaman aşımları sessiz bir bağlantıyı birkaç dakika sonra koparıyor mu?
  • Uygulamanızın bağlantısı ekran kilidi, uygulama değiştirme ve ağ geçişi (Wi-Fi → 4G/5G) sonrasında ayakta kalıyor mu?
  • Sertifikalar, masaüstünüzden farklı olabilen telefonun güven deposunda doğrulanıyor mu?

Seçenek 1 — WSS üzerinden tarayıcı

Mobil tarayıcılar WebSocket'i destekler; bu yüzden MQTT over WebSockets masaüstündekiyle aynı şekilde çalışır.

  1. Telefonda testmqtt.com/client adresini açın.
  2. Protokolü WSS olarak bırakın. Kendi broker'ınız için Custom broker… seçin; host olarak broker.connectmq.com, port 8084, path mqtt ve test kullanıcınızın bilgilerini girin.
  3. testmqtt/phone-4c21/# gibi benzersiz bir topic'e abone olun ve testmqtt/phone-4c21/hello topic'ine publish edin.

Küçük klavyede yazmamak için bağlantıyı dizüstünde hazırlayıp telefonda açın (kendinize gönderin veya QR koda dönüştürün):

Open this link on the phone
https://testmqtt.com/client?url=wss://broker.connectmq.com:8084/mqtt&topic=testmqtt/phone-4c21/%23

Ardından dizüstünden publish edin ve telefonun mesajı almasını izleyin — bu, masaüstü bir istemciden broker üzerinden mobil ağa kadar uzanan tüm yolu kanıtlar:

Laptop → broker → phone
mosquitto_pub -h broker.connectmq.com -p 1883 \
  -t testmqtt/phone-4c21/hello -m "from laptop" -q 1

Telefonu Wi-Fi'dan mobil veriye geçirip tekrarlayın. Birinde çalışıp diğerinde çalışmıyorsa sorun broker'da değil, ağdadır. Masaüstü için adım adım sürüm tarayıcınızdan MQTT broker testi yazısında.

Seçenek 2 — Yerel MQTT uygulamaları

Yerel uygulamalar gerçek TCP ve TLS soketleri açar; yani cihazlarınızın kullandığı portların aynısını test eder. İki uygulama mağazasında da çok sayıda genel amaçlı MQTT istemcisi ve dashboard uygulaması var — Android'de MyMQTT, MQTT Dash ve IoT MQTT Panel gibi; iOS'ta MQTTool ve IoT MQTT Panel gibi uygulamalar. Erişilebilirlik ve özellikler değişebilir; mağaza sayfasını kontrol edin ve şunlara izin veren uygulamaları tercih edin:

ÖzellikTest için neden önemli
TCP ve TLS (8883)Cihazlarınızın gerçekten kullandığı portu test etmek
Özel CA / sertifika seçenekleriÖzel CA'lar ve istemci sertifikaları
Kullanıcı adı / parolaKimlik doğrulamalı broker'lar ve ACL kontrolleri
MQTT 3.1.1 / 5 seçimiCihaz firmware'inizle eşleşmek
Wildcard ile abonelikBir cihazın tüm alt ağacını izlemek
Retain ve QoS seçenekleriGerçek cihaz davranışını yeniden üretmek

ACL'leri test topic'leriyle sınırlı özel bir test kullanıcısı kullanın — mobil uygulamalar kimlik bilgilerini genellikle cihazda saklar.

Seçenek 3 — Telefonda bir terminal

Android'de Termux, Mosquitto komut satırı istemcileriyle birlikte bir Linux ortamı sunar:

Termux on Android
pkg install mosquitto
mosquitto_sub -h broker.connectmq.com -p 1883 -t 'testmqtt/phone-4c21/#' -v &
mosquitto_pub -h broker.connectmq.com -p 1883 -t testmqtt/phone-4c21/hello -m "from termux"

Aynı komutlar TLS için -p 8883 ve --capath ya da --cafile ile de çalışır (cihazdaki bir CA paketini gösterin). iOS'ta terminal uygulamaları daha sınırlıdır; iPhone'da betik çalıştırmak için yerel bir uygulama ya da tarayıcı genellikle daha basittir. CLI çalıştığında mosquitto_pub ve mosquitto_sub örnekleri yazısındaki her şey telefonda da geçerlidir.

Kendi uygulamanızı test etmek: emülatörler ve simülatörler

Geliştirdiğiniz uygulama bağlanamıyorsa sorunun kodda mı yoksa ağda mı olduğunu bulun:

  • Android emülatörü: Emülatör içindeki localhost emülatörün kendisidir. Geliştirme makinenizde çalışan bir broker'a ulaşmak için 10.0.2.2 kullanın.
  • iOS simülatörü: Mac'in ağ yığınını paylaşır; dolayısıyla localhost Mac'teki broker'a ulaşır. Fiziksel bir iPhone ulaşamaz — Mac'in yerel ağ IP'sine ihtiyaç duyar.
  • Fiziksel cihazlar: Broker yalnızca 127.0.0.1'i değil yerel ağ arayüzünü dinlemelidir (listener tanımlanmamış Mosquitto 2.x yalnızca yerel bağlantıları kabul eder) ve host'un firewall'u porta izin vermelidir.

Platform kuralları da uygulamanızdaki düz metin bağlantıları engelleyebilir. Android'in ağ güvenliği yapılandırması HTTP tabanlı yığınlarda cleartext trafiği varsayılan olarak engeller; bu ws://'yi etkiler. iOS App Transport Security ise WebSocket'ler dahil URLSession tabanlı bağlantılara uygulanır. İstisna eklemek yerine wss:// veya TLS (8883) kullanın. Kütüphaneye özel kurulum Kotlin ile Android'de MQTT ve Swift ile iOS'ta MQTT yazılarında.

Mobil ağ tuzakları

BelirtiOlası nedenNe denenmeli
Wi-Fi'da çalışıyor, mobil veride zaman aşımıAğ 1883/8883 portlarını kısıtlıyorBroker'ınız sunuyorsa 443'te WSS deneyin; operatör/MDM ile görüşün
Birkaç sessiz dakikadan sonra bağlantı kopuyorOperatör NAT'ının boşta kalma zaman aşımıKeep alive'ı zaman aşımının altına çekin (ör. 30–60 sn); bkz. NAT zaman aşımları
Ekran her kilitlendiğinde bağlantı kesiliyorİşletim sistemi uygulamayı askıya alıyorBeklenen durum; yeniden bağlanma + kalıcı oturumlara göre tasarlayın
Ağ değişiminde yeniden bağlanma dalgasıHandover sırasında IP adresi değişiyorBackoff ile temiz yeniden bağlanma, aynı client ID
Yalnızca telefondan Connection refusedBroker localhost'a bağlı veya firewall kuralı0.0.0.0'ı dinleyin, portu açın, başka bir makineden nc ile test edin
Telefonda sertifika hatası, masaüstünde sorun yokEksik ara sertifika veya özel CAZincirin tamamını sunun; CA'yı test cihazlarına yükleyin

Laboratuvarda gerçekçi dengesiz ağ testleri için MQTT'yi mobil ağ koşullarında test etme yazısına bakın.

Beş dakikalık mobil test planı

  1. Wi-Fi'da telefon tarayıcısı: WSS ile bağlanın, abone olun, publish edin, mesajı alın.
  2. Aynı testi mobil veride yapın.
  3. Dizüstünden publish edip telefonda alın (ve tersi).
  4. Yerel uygulama veya Termux: gerçek kimlik bilgilerinizle TCP 1883 ve TLS 8883 üzerinden tekrarlayın.
  5. Bir aboneliği on dakika boşta bırakın; ayakta kalıp kalmadığını kontrol edin.
  6. Ekranı kilitleyin, ağı değiştirin, kilidi açın: uygulamanızın yeniden bağlandığını ve yeniden abone olduğunu doğrulayın.

İstemciyi telefonunuzda açın

Telefondan test birkaç dakika sürer ve hiçbir masaüstü testinin yakalamayacağı sorunları ortaya çıkarır: mobil veride engellenen portlar, NAT zaman aşımları, uykuya dalan uygulamalar ve yalnızca cihazın güven deposunda başarısız olan sertifika zincirleri. WSS ile mobil tarayıcıdan başlayın, ardından uygulamanızın bağlı olduğu portlar ve davranışlar için yerel bir istemciye geçin.

Sıkça sorulan sorular

Bir MQTT broker'ı telefondan test etmenin en hızlı yolu nedir?

Telefonun tarayıcısında testmqtt.com/client gibi bir online MQTT istemcisi açın ve güvenli WebSocket (wss, genellikle 8084 veya 443 portu) ile bağlanın. Android'de Chrome ve iOS'ta Safari'de aynı şekilde çalışır, uygulama kurmanız gerekmez.

Telefonum dizüstü bilgisayarımda çalışan MQTT broker'a neden ulaşamıyor?

Telefondaki localhost telefonun kendisidir. Dizüstünün yerel ağ IP adresini kullanın; ikisinin aynı ağda olduğundan, broker'ın yalnızca 127.0.0.1'i değil tüm arayüzleri dinlediğinden ve dizüstünün firewall'unun porta izin verdiğinden emin olun.

MQTT neden Wi-Fi'da çalışıp mobil veride çalışmıyor?

Bazı mobil ve misafir ağları 1883 ve 8883 gibi web dışı portları kısıtlar; operatör NAT'ı da boşta kalan bağlantıları hızla düşürebilir. Varsa 443 portunu veya 443 üzerinden WebSocket'i deneyin ve ağın boşta kalma süresinden kısa bir keep alive kullanın.