Goufalite tiene toda la razón sobre este problema: no es un problema técnico en absoluto, solo un problema de nomenclatura, por lo que muchos de los consejos son muy obstinados en función de la idea del autor de qué nombres son los mejores.
La especificación MQTT 3.1 dice :
- Los nombres de tema y los filtros de tema distinguen entre mayúsculas y minúsculas
- Los nombres de tema y los filtros de tema pueden incluir el carácter de espacio
- Los nombres de tema y los filtros de tema son cadenas codificadas UTF-8, NO DEBEN codificar a más de 65535 bytes
Entonces, hablando puramente por razones técnicas, las reglas de solo ASCII y 'sin espacios' no son necesarias; todos los corredores MQTT que cumplan con los requisitos deberían poder manejarlos perfectamente.
De todos modos, no estoy de acuerdo con algunos de los puntos que HiveMQ hace:
Un espacio es el enemigo natural de cada programador, a menudo hacen que sea mucho más difícil leer y depurar temas, cuando las cosas no van como deberían, deberían serlo. De modo similar al primero, solo porque algo está permitido no significa que deba usarse. UTF-8 conoce muchos tipos diferentes de espacios en blanco, es bastante obvio que se deben evitar estos caracteres poco comunes.
Es muy poco probable que vayas a usar espacios de otra manera que solo presionar la SPACEtecla en tu teclado, por lo que no creo que el uso accidental de homoglifos sea realmente un problema.
El uso de caracteres no ASCII UTF-8 hace que sea realmente difícil encontrar errores tipográficos o problemas relacionados con el conjunto de caracteres, porque a menudo no se pueden mostrar correctamente. A menos que sea realmente necesario, recomendamos evitar el uso de caracteres no ASCII en un tema.
Punto justo: escribir caracteres no ASCII puede ser un gran problema. Personalmente, evitaría Garage_Sensor_001/Temperature/°C
simplemente porque muchos teclados no tienen un símbolo de grados incorporado (¡los teclados británicos ciertamente no lo tienen!). Esta decisión se basa realmente en la practicidad más que en el protocolo; si puede usar caracteres especiales sin mucho alboroto y está seguro de que nadie más tendrá que escribir los caracteres, ¡adelante!
Además, sería un poco escéptico sobre algunos de los consejos de HiveMQ; más adelante en la página que ha vinculado, dice "No se suscriba a #", que ya se ha disputado en el sitio .