每次加载索引时,我如何接收发送到网页的MQTT主题的所有消息



所以我是MQTT的新手,我必须制作一个;消息传送";项目,它在没有长加载时间的情况下加载我的索引页面中的所有消息(发送到某个主题(,我正在使用Yii2 Framework Advanced project,我已经完成了发布代码,在模型中我创建了AfterSave方法,每次它将一些东西保存到数据库时,它都会将一条消息发布到我的Raspberry PI 中的MQTT Broker

示例

我拥有一家酒店,每次我登录到我的后端时,我都想在我的索引中包含MQTT mosquitto中发送到该主题的所有预订请求;请求预订";(比如通知(。

正如我所说,我正在使用Yii2 Framework Advanced Project,我为MQTT使用的扩展是Bluerhinos\phpMQTT

我已经拥有的代码:

ClassModelReservationRequest.php(这正在运行并发送到主题,因为我已经在shell中进行了测试(

public function afterSave($insert, $changedAttributes) {
parent::afterSave($insert, $changedAttributes); // TODO: Change the autogenerated stub
if ($insert){
$this->publish("request-reservation", "New notification of a reservation request with the ID: '. $this->id . PHP_EOL");
}
}

欢迎任何建议,并感谢的关注

排序答案是您不需要。

MQTT不是一个消息队列系统。它只会对尚未传递到具有持久订阅的客户端的消息进行排队,该客户端在发送消息时当前处于脱机状态。

你可能有两个选项

  1. 发布一条包含所有文件室(例如{ "room1": "occupied", "room2": "free",...}(当前状态的消息,并设置保留标志,以便在客户端订阅该主题时始终将此消息的最新版本传递给客户端。

  2. 对后端进行REST调用,该后端可以对数据库运行查询以检索所有房间的当前状态。

最新更新