• 三、服务端代码实现


    新建项目后,首先应该导入我们之前搭建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后得到的消息会执行到里面 

  • 相关阅读:
    linux 回收站 路径
    Linux 让进程在后台可靠运行的几种方法
    用marquee和div+js实现首尾相连循环滚动效果
    轻型数据库SQLite结合PHP的开发
    linux系统权限修复——学生误操作!
    2009级 毕业设计 题目
    linux下硬盘uuid查看及修改设置
    创建网站地图
    用上下左右箭头键在textbox中的光标跳转
    SHELL中时间的比较
  • 原文地址:https://www.cnblogs.com/Somture478/p/11856053.html
Copyright © 2020-2023  润新知