zoukankan      html  css  js  c++  java
  • 三、服务端代码实现

    新建项目后,首先应该导入我们之前搭建mosquitto服务器时下载的jar包,下载地址为:

    https://repo.eclipse.org/content/repositories/paho-releases/org/eclipse/paho/

    1.导入jar包

    步骤如下:

    完成上面步骤后是这样的:

     

    2.服务端代码:

     A.接收消息:

     首先我们要先定义我们所需要的变量:

        public static final String HOST = "tcp://localhost:1883";
        public static final String TOPIC = "onoff";
        private static final String clientid = "client11";
        private MqttClient client;
        private MqttConnectOptions options;
        private String userName = "admin";
        private String passWord = "password";
        private ScheduledExecutorService scheduler;

    接下来我们在start()方法中写上具体实现的代码:

    a.实例化client:

    选择需要的三个参数的MqttClient的构造函数,参数分别为HOST, client, new MemoryPersistence()

    b.实例化options:

    这里直接使用默认的构造方法就好

    c.依次调用options的五个方法:

    setCleanSession(true)

    作用是设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录,这里设置为true表示每次连接到服务器都以新的身份连接

    setUserName(userName)

    作用是设置连接的用户名

    setPassword(passWord.toCharArray())

    作用是设置连接的密码

    setConnectionTimeout(//时间)

    作用是设置超时时间 单位为秒

    options.setKeepAliveInterval(//时间)

    作用是设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制

    d.设置回调

    client.setCallback(new PushCallback())

    e.订阅主题

    MqttTopic topic = client.getTopic(TOPIC)

    f.连接

    client.connect(options);

    g.订阅消息

    int[] Qos = {1}
    String[] topic1 = {TOPIC}
    client.subscribe(topic1, Qos)

    B.消息回调

    消息回调类中用到三个方法:

    public void connectionLost(Throwable cause):连接丢失后,一般在这里面进行重连  

    public void deliveryComplete(IMqttDeliveryToken token):是否发送成功

    public void messageArrived(String topic, MqttMessage message):subscribe后得到的消息会执行到里面 

  • 相关阅读:
    iOS BUG整理-记录我近期视频开发遇到的问题
    iOS 翻译-UIWebView的基本简介-官方文档翻译
    iOS 翻译-Xcode使用-文档翻译
    4.redis设计与实现--跳跃表
    3.redis设计与实现--字典
    2.redis设计与实现--链表
    1.redis设计与实现--简单动态字符串
    12.编码问题讨论
    11.nginx upload module + python django 后台 实现视频上传与切片
    10.nginx+ffmpeg上搭建HLS切片
  • 原文地址:https://www.cnblogs.com/Somture478/p/11856053.html
Copyright © 2011-2022 走看看