Javascript MQTT主题和唯一性问题

Javascript MQTT主题和唯一性问题,javascript,regex,node.js,mqtt,Javascript,Regex,Node.js,Mqtt,我正在用MQTT做一些实验,我遇到了一些奇怪的事情。这可能是由于我的特殊设置,但我想我无论如何都会要求离开 我使用Node.JS和mqttjs作为代理。我还使用了用Java编写的IBMIA92测试客户机 当我订阅像/system/app这样的主题,然后将消息发布到/system/appp时,我的客户端会收到此消息,尽管主题名称不同。请注意,如果我发布到/system/ap,我不会收到消息。当然,发布到/system/app也可以 这是否意味着MQTT“自动填充”类似的内容,或者这是客户机/代理中

我正在用MQTT做一些实验,我遇到了一些奇怪的事情。这可能是由于我的特殊设置,但我想我无论如何都会要求离开

我使用Node.JS和mqttjs作为代理。我还使用了用Java编写的IBMIA92测试客户机

当我订阅像
/system/app
这样的主题,然后将消息发布到
/system/appp
时,我的客户端会收到此消息,尽管主题名称不同。请注意,如果我发布到
/system/ap
,我不会收到消息。当然,发布到
/system/app
也可以

这是否意味着MQTT“自动填充”类似的内容,或者这是客户机/代理中的错误?我知道
+
#
通配符,但我不知道这个“特性/错误”

我使用的代理可以在这里找到:


它在第23行有一些奇怪的正则表达式,我试图弄清楚为什么需要它以及它的作用。如果这不是一个特性,它可能是一个bug的原因?如果有人对此有任何想法,我将不胜感激。

我对MQTT一无所知,但“bug”似乎是由正则表达式未被锚定这一事实引起的,因此如果订阅主题名可以在针对它进行测试的主题名中找到,匹配将成功(在第40行的
测试中)

如果通过将第23行从

 , reg = new RegExp(topic.replace('+', '[^\/]+').replace('#', '.+$'));   

它可以防止这种行为


我建议您在github repo中将其作为一个问题打开。

我对MQTT一无所知,但“bug”似乎是由正则表达式未锚定这一事实引起的,因此,如果订阅主题名称可以在针对它进行测试的主题名称中找到,则匹配将成功(在第40行的
测试中)

如果通过将第23行从

 , reg = new RegExp(topic.replace('+', '[^\/]+').replace('#', '.+$'));   

它可以防止这种行为


我建议您在github回购协议中将其作为问题打开。

同意我将在mqtt.js跟踪器上提出问题

我还建议向MQTT Google小组询问此类协议规范问题,并针对rsmb和MOSQUITO代理测试相同的内容,这些代理或多或少都是参考实现


FWIW、IA92既非常(非常)旧又过时,而且许可证也有问题。如果您想要MQTT的Java客户机,请查看Eclipse Paho,它是当前的参考实现。

同意我会在MQTT.js跟踪器上提出一个问题

我还建议向MQTT Google小组询问此类协议规范问题,并针对rsmb和MOSQUITO代理测试相同的内容,这些代理或多或少都是参考实现


FWIW、IA92既非常(非常)旧又过时,而且许可证也有问题。如果您想要MQTT的Java客户机,请查看Eclipse Paho,它是当前的参考实现。

谢谢,我在问题队列中提出了这个问题,我们将看到它的结果。一旦一切清楚,我们将接受答案:)谢谢,我已经在问题队列中提出了这个问题,我们将看看结果如何。一旦一切清楚,我们将接受答案:)谢谢,我已经在问题队列中提出了这个问题,我们将看看结果如何。另外,谢谢你给泛美卫生组织的小费,我不知道他们有一个可以用来测试的客户。我会调查的!Paho目前没有像IA92中那样的独立GUI(我提出了一个bug说我们需要一个!),但是有一个Eclipse视图可以用于测试。mosquitto命令行示例也非常方便。谢谢,我已经在问题队列中提出了这个问题,我们将看到它的效果。另外,谢谢你给泛美卫生组织的小费,我不知道他们有一个可以用来测试的客户。我会调查的!Paho目前没有像IA92中那样的独立GUI(我提出了一个bug说我们需要一个!),但是有一个Eclipse视图可以用于测试。mosquitto命令行示例也非常方便。