首页 > MQTT协议的消息类型, 可以如何分类?

MQTT协议的消息类型, 可以如何分类?

    public final static int MQTT_CONNECT = 1;        //请求连接
    public final static int MQTT_CONNACK = 2;        //请求应答
    public final static int MQTT_PUBLISH = 3;        //发布消息
    public final static int MQTT_PUBACK  = 4;        //发布应答
    public final static int MQTT_PUBREC  = 5;        //发布已接收,保证传递1
    public final static int MQTT_PUBREL  = 6;        //发布释放,保证传递2
    public final static int MQTT_PUBCOMP = 7;        //发布完成,保证传递3
    public final static int MQTT_SUBSCRIBE = 8;         //订阅请求
    public final static int MQTT_SUBACK = 9;            //订阅应答
    public final static int MQTT_UNSUBSCRIBE = 10;      //取消订阅
    public final static int MQTT_UNSUBACK = 11;       //取消订阅应答
    public final static int MQTT_PINGREQ = 12;        //ping请求
    public final static int MQTT_PINGRESP = 13;        //ping响应
    public final static int MQTT_DISCONNECT = 14;       //断开连接

第一次接触这种在socket上的编程.目前想实现一个语音分发的功能, 差不多就是群聊吧.
采用的netty, 协议是用的MQTT

我目前想法是在服务器这边定义几个handler(非netty中的handler概念), 这个就对应消息类型的几大类, 比如消息handler, 用户handler, 每种handler可以处理几种消息类型. 但是又不知道如何分类比较合适? 请各位帮忙看看. 或者有更好的思路的,请指教.先谢过了.



1. 首先你列出的是MQTT协议中对于服务器分发消息中的固定报头中对于消息类型的定义。

其实,这在大部分开源实现中是统一的,没有什么实际意义,主要根据这些类型,来做一些业务上的处理。比如,你在接受到请求连接MQTT_CONNECT时候,初始化资源;
在断开连接MQTT_DISCONNECT的时候,做一些扫尾工作,就像在app中发现已经断开连接,就主动推送一个消息给app,告诉app连接已断开,不能发送消息了;

2.真正实现业务上的消息类型,是需要自己自定义的,在payload中,定义消息类型。payload才是真正业务消息实体。
比如,自定义:

{
//文本
  message : 1,
  content : "你好",
  time    : "2016-2-1"
}
{
//图片
  message : 2,
  content : "www.baidu.com/image/img.jpg",
  time    : "2016-2-1"
}

当然,主要根据自己的业务需求,定义需要的消息类型与格式,然后将上面的数据转换为data,将data置于在payload中进行分发。

我也是刚接触MQTT协议不久,,而且做的iOS端的订阅,分发。粗浅理解,提供一个思路,可以互相交流学习。
在github上,我整理了一些材料:https://github.com/wenghengcong/MQTTExplore。

【热门文章】
【热门文章】