标签: mqtt

第一个订阅者读取 MQTT 消息后将其删除

有没有办法在第一个订阅者收到 MQTT 消息后从其主题中删除该消息,以便其他订阅者无法读取它?
为了弄清楚这个奇怪的问题:
我必须处理四个 JBoss 实例(我必须承认我绝对不对该架构负责)。他们是彼此的镜子。因此,它们中的每一个都运行一项订阅特定主题的作业。来自该主题的消息保留在数据库中。我必须避免的是同一条消息被保留四次。所以我的想法是在这个主题上创建一个竞争条件。第一个读取该消息的作业将其删除,以便其他作业不会收到该消息。这可能吗?

java jboss mqtt

1
推荐指数
1
解决办法
2295
查看次数

Java Paho MQTT 检测重连

我正在使用适用于 Android 的 Paho MQTT 库,我的应用程序正在交换实时编辑数据。我想在应用程序与代理断开连接时禁用编辑文本,并在重新建立连接时启用它。

第一部分很简单,MqttCallback有一个connectionLost方法,但不能重新连接。另外,在调试IMqttActionListener连接方法时,我注意到重新连接时不会触发该事件。

所以我的问题是是否有任何方法可以检测重新连接?

java android mqtt

1
推荐指数
1
解决办法
595
查看次数

MQTT 消息到 JSONObject

我想将以 JSON 格式收到的 MQTT 消息(例如: {"event":"value","type":"r","value":0} )转换为 JSONObject,但我不知道如何做吧。

我已经尝试过这个:

public void messageArrived(String t, MqttMessage m) throws Exception {
            String message = m.toString();
            JSONObject jsonmsg = (JSONObject) JSONObject.stringToValue(message); 
}
Run Code Online (Sandbox Code Playgroud)

但这并没有真正发挥作用。有办法做到吗?

java json mqtt

1
推荐指数
1
解决办法
6304
查看次数

Facebook 如何利用基于主题的 MQTT?

我正在学习 MQTT,并看到一篇文章,其中指出 Facebook 使用 MQTT。但是,当 MQTT 基于主题时,我无法理解它是如何使用的。这是否意味着每次我创建新聊天时经纪人都会创建一个新主题?这不会导致话题过多吗?如果我理解正确的话,聊天的人将发布和订阅同一主题。

facebook mqtt

1
推荐指数
1
解决办法
7283
查看次数

在开源QT中安装MQTT模块

Qt 中的 mqtt 模块仅在商业许可下可用。不过,如果您的 PC 上有 Linux 发行版,您也可以在开源版本中执行此操作。

linux qt mqtt

1
推荐指数
1
解决办法
5475
查看次数

尝试使用 Mqtt.js 通过 WebSockets 连接到 Mosquitto MQTT

我想构建一个网页来发送和接收主题。我正在使用mosquittoMQTT.js

  1. 我使用它作为配置文件:
    protocol websockets
    listener 1884
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我跑sudo mosquitto -c /etc/mosquitto/mosquitto.conf并得到
    1647529861: mosquitto version 2.0.14 starting
    1647529861: Config loaded from /etc/mosquitto/mosquitto.conf.
    1647529861: Opening websockets listen socket on port 1884.
    1647529861: mosquitto version 2.0.14 running
    
    Run Code Online (Sandbox Code Playgroud)
  3. 我正在使用一个简单的mqtt.html完整源代码):
    <script src="https://unpkg.com/mqtt/dist/mqtt.min.js"></script>
    <script>
    const client = mqtt.connect("ws://localhost:1884")
    </script>
    
    Run Code Online (Sandbox Code Playgroud)

问题:

  • 在 Chrome 中,它只是与 101 连接并一遍又一遍地执行。当您检查 websockets 消息时,“服务器”收到:00000000: 2002 0005。当我检查蚊子的日志时:我得到了很多1647530429: Client mqttjs_b0e54ea4 closed its connection.

我正在运行:

LSB Version:    n/a
Distributor ID: ManjaroLinux
Description:    Manjaro Linux …
Run Code Online (Sandbox Code Playgroud)

javascript websocket mqtt mosquitto

1
推荐指数
1
解决办法
738
查看次数

带 Websocket 的 Mosquitto 2.0.14

我有一个在 Windows Server 2019 中运行的 Mosquitto 2.0.14 代理。我可以使用启用了 SSL 的 mqtts 协议通过端口 8883 连接到它。我还可以在没有 SSL 的情况下通过端口 1883 连接到它。
现在我想使用 Websockets 进行连接。所以我添加了一个监听器:

listener 9001
protocol websockets
allow_anonymous false
password_file C:\mosquitto\password.txt
http_dir C:\mosquitto\http_dir
set_tcp_nodelay true
Run Code Online (Sandbox Code Playgroud)

我也尝试过不使用http_dirset_tcp_nodelay。我尝试过使用和不使用 SSL 证书。
我在 Windows 防火墙以及 AWS EC2 实例安全组中打开了端口 9001。

这是我运行 mosquitto 经纪人的时候

9001端口被蚊子占用

但是当我尝试使用以下命令连接到代理时ws://broker.mysite.com:9001ws://broker.mysite.com:9001/mqtt什么也没有发生。没有错误,没有连接。即使我可以看到使用 WireShark 传入的请求,Mosquitto 也不显示任何日志。我真的被困在这里了。请帮帮我。

编辑:
我尝试使用 MQTTX、MQTT Explorer 和 MQTTBox Chrome 应用程序进行连接。

amazon-ec2 websocket mqtt mosquitto

1
推荐指数
1
解决办法
1735
查看次数

清除会话标志设置为FALSE时,我缺少已发布的值

有没有人有一个合乎逻辑的解释为什么尽管我clear session flage = false没有收到我订阅的更新的已发布消息,而我没有连接到经纪人?

随着aoretioned标志设置为false我运行了我的应用程序,并且我继续向某个主题发布一些值(从PC到代理而不是从Android设备到代理).然后我从电脑上拔掉了Android设备的usb,并继续发布了一些值.当我再次将USB插入电脑时,我希望看到我最近发布到该主题的值,但我没有收到任何值.

我要发布的主题正是我订阅的主题QoS = 1.

android messagebroker mqtt paho

0
推荐指数
1
解决办法
1385
查看次数

AMQJS0011E无效状态未连接

我正在尝试在树莓派paho的MQTT Broker上发布消息。我已经使用Visual Studio 2015(在Windows 10上)构建了一个“应用程序”,并且正在使用波纹模拟器对其进行测试,但是我总是会收到此错误

AMQJS0011E未连接无效状态。

我还尝试导出文件,并在Linux系统上使用firefox将其打开为常规网页,但出现了同样的错误,因此我认为与Windows无关。

通过按钮触发的函数是playCanzone()

function playCanzone() {
console.log("play premuto");
mqttHost = '192.168.9.184';
topic = 'testTopic';
client = new Paho.MQTT.Client(mqttHost, 8080, "myclientid_" + parseInt(Math.random() * 100, 10));
onConnect();//publish('mEssaggio', 'testtopic/bar', 2);
}

// set callback handlers
client.onConnectionLost = onConnectionLost;
client.onMessageArrived = onMessageArrived;

// connect the client
client.connect({ onSuccess: onConnect });

// called when the client connects
function onConnect() {
// Once a connection has been made, make a subscription and send a message.
console.log("onConnect");
client.subscribe(topic);
message = new …
Run Code Online (Sandbox Code Playgroud)

javascript mqtt paho

0
推荐指数
1
解决办法
5692
查看次数

MQTT - 将消息发布到许多独立主题

在MQTT中,客户端可以订阅主题名称或主题通配符.可以使用相同的通配符将消息发布到主题或某些主题.但是如何将消息发布到彼此独立的某个主题?我需要修改MQTT协议吗?

例如:我的服务器处理来自10个客户端的连接(这些客户端彼此不相关)与ids:client1,client2,...,client 10和client1想要向任意数量的客户端发送消息(例如客户端3,客户端7,客户端8)

messaging publish-subscribe mqtt

0
推荐指数
1
解决办法
3442
查看次数