为什么有效订阅者只获得最后发布的消息

时间:2016-02-23 08:27:07

标签: asp.net mqtt mosquitto paho m2m

M2mqtt 合并到我的asp.net mvc 项目中。面对同步订阅信息的问题。 enter image description here 当多个客户在一个特定主题上发布时,客户可以轻松订阅它们。

假设在一种情况下发布时发生,那么客户端在他活着时就会关闭/离线,然后只获取最后发布的消息而不是所有发布的消息。 怎么做?这是MQTT的一个问题吗?客户端如何获取所有发布的消息。

M2mqtt连接代理使用bellow语法

var inbox_items = function(){
        for (var i = start; i < limit; i++)
        {               
            var inbox = data[i];
            console.log(inbox);
            li = li+'<div class="list-group-item">'+
                    '<div class="row">'+
                        '<div class="col-md-1"><input type="checkbox"/></div>'+
                        '<a href="" style="text-decoration:none">'+
                        '<div class="col-md-5">'+inbox.msg_email+'</div>'+
                        '<div class="col-md-2">'+inbox.msg_subject+'</div>'+
                        '<div class="col-md-1">'+inbox.msgStatus_id+'</div>'+
                        '<div class="col-md-3">'+inbox.msg_date+" "+inbox.msg_time+'</div>'+
                        '</a>'+
                    '</div>'+
                  '</div>';             
        }
        return li;
    }

    switch(action)
    {
        case 'sentItems': $('#list_msgboxlist_msgbox').append(sent_items);                              
                            break;
        default: $('#list_msgbox').append(inbox_items);                     
                    break;
    }

**注意:**对于clean_session属性,将Connect方法参数四设置为false,但它不起作用。

1 个答案:

答案 0 :(得分:0)

要确保订阅者收到所有邮件,即使是脱机时发布的邮件(称为邮件持久性),您还需要执行以下操作:

  1. 确保订阅者中的“清理会话”已关闭
  2. 确保每个订阅者使用唯一的客户端ID
  3. 使用1或2的QoS
  4. 您没有说明您正在使用哪个MQTT服务器,但您需要确保服务器实现也支持它。