我想测试MQTT协议的QoS。我使用伊蚊作为经纪人。
对于测试QoS 2,我必须评估的测试用例之一是运行一种方案,即一旦客户端发布了一条消息,则代理将其转发给接收该消息的订户,但是{ 3}}和/或acknowledgement(tcp)未被经纪人接收。通过运行这种情况,我检查订户两次没有收到消息。
所以我的计划是,一旦客户端发布一条消息以运行aedes.authorizePublish代理方并设置休眠状态几秒钟,同时阻止使用的端口上订户的IP(1883) )。
尝试过:
netsh advfirewall firewall add rule name="IP Block" dir=in
protocol=TCP interface=any action=block remoteip=172.30.10.120
localport=1883
因此,我希望代理将消息发布到172.30.10.120(订阅者),并且在我用以下命令反转netsh命令之前,代理不应接收来自订阅者的任何数据包
netsh advfirewall firewall delete rule name="IP Block" remoteip=172.30.10.120.
这是运行伊蚊经纪人的代码:
mqttBroker.authorizePublish = function (client, packet) {
if (packet.topic === 'hello' && client.id === '01B4C') {
let PACK = packet;
setTimeout(function (packet) {
mqttBroker.publish(PACK)
}, 10000)
}
}
所以我希望得到这样的数据包: pubrec(mqtt)
但是,从上图中获得的数据包是我从已订阅的客户端中拔出eth电缆并将其放回去时得到的。
我使用netsh命令从过程中获得的数据包是: Packets when I remove eth cable from subscribed client
我的问题是:
预先感谢
P.S。初学者。.