MQTT协议的消息类型如何分类?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

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

蛮大人123 2016-03-09 19:07:27 2827

`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可以处理几种消息类型. 但是又不知道如何分类比较合适? 请各位帮忙看看. 或者有更好的思路的,请指教.

分享到
取消 提交回答
全部回答(2)
  • hill007299
    2019-07-17 18:56:38

    控制类的和业务类的可以分开,业务处理如果是阻塞型的,要独立线程池。当然也建议用aliyun的MQ,上面的mqtt服务支持群聊

    0 0
  • 蛮大人123
    2019-07-17 18:56:38
    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端的订阅,分发。粗浅理解,提供一个思路,可以互相交流学习。

    0 0
添加回答
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章