Goufalite ist in Bezug auf dieses Problem völlig richtig: Es handelt sich überhaupt nicht um ein technisches Problem, sondern nur um ein Namensproblem. Daher ist ein Großteil der Ratschläge auf der Grundlage der Vorstellung des Autors, welche Namen am besten sind, sehr eigensinnig.
Die MQTT 3.1-Spezifikation lautet :
- Bei Themennamen und Themenfiltern wird zwischen Groß- und Kleinschreibung unterschieden
- Themennamen und Themenfilter können das Leerzeichen enthalten
- Themennamen und Themenfilter sind UTF-8-codierte Zeichenfolgen. Sie dürfen NICHT in mehr als 65535 Byte codiert werden
Aus technischen Gründen sind die Regeln nur für ASCII und "keine Leerzeichen" nicht erforderlich. Alle konformen MQTT-Broker sollten in der Lage sein, mit ihnen einwandfrei umzugehen.
Ich stimme einigen der Punkte, die HiveMQ sowieso macht, nicht wirklich zu:
Ein Leerzeichen ist der natürliche Feind eines jeden Programmierers. Oft erschweren sie das Lesen und Debuggen von Themen. Wenn die Dinge nicht so laufen, wie sie sind, sollten sie es sein. Nur weil etwas erlaubt ist, heißt das nicht, dass es verwendet werden sollte. UTF-8 kennt viele verschiedene Leerraumtypen. Es ist ziemlich offensichtlich, dass solche ungewöhnlichen Zeichen vermieden werden sollten.
Es ist höchst unwahrscheinlich, dass Sie Leerzeichen auf andere Weise als nur durch Drücken der SPACETaste auf Ihrer Tastatur verwenden. Daher denke ich nicht, dass die versehentliche Verwendung von Homoglyphen wirklich ein Problem darstellt.
Die Verwendung von Nicht-ASCII-UTF-8-Zeichen macht es wirklich schwierig, Tippfehler oder Probleme im Zusammenhang mit dem Zeichensatz zu finden, da diese häufig nicht korrekt angezeigt werden können. Sofern dies nicht wirklich erforderlich ist, empfehlen wir, die Verwendung von Nicht-ASCII-Zeichen in einem Thema zu vermeiden.
Fairer Punkt - das Eingeben von Nicht-ASCII-Zeichen kann ein großes Problem sein. Persönlich würde ich es Garage_Sensor_001/Temperature/°C
einfach vermeiden , weil in vielen Tastaturen kein Gradsymbol eingebaut ist (britische Tastaturen sicherlich nicht!). Diese Entscheidung basiert eher auf der Praktikabilität als auf dem Protokoll. Wenn Sie in der Lage sind, Sonderzeichen ohne großen Aufwand zu verwenden, und Sie sicher sind, dass niemand anderes die Zeichen eingeben muss, machen Sie es!
Außerdem wäre ich ein wenig skeptisch gegenüber einigen Ratschlägen von HiveMQ. Weiter unten auf der Seite, die Sie verlinkt haben, steht "Abonnieren Sie nicht #", was auf der Website bereits umstritten ist !