`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可以处理几种消息类型. 但是又不知道如何分类比较合适? 请各位帮忙看看. 或者有更好的思路的,请指教.
控制类的和业务类的可以分开,业务处理如果是阻塞型的,要独立线程池。当然也建议用aliyun的MQ,上面的mqtt服务支持群聊
在断开连接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端的订阅,分发。粗浅理解,提供一个思路,可以互相交流学习。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。