服务端代码实现

Posted somture478

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了服务端代码实现相关的知识,希望对你有一定的参考价值。

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

 

以上是关于服务端代码实现的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud系列四:Eureka 服务发现框架(定义 Eureka 服务端Eureka 服务信息Eureka 发现管理Eureka 安全配置Eureka-HA(高可用) 机制Eur(代码片段

代码片段 - Golang 实现简单的 Web 服务器

你可能不知道的JavaScript代码片段和技巧(下)

你可能不知道的JavaScript代码片段和技巧(上)

从片段调用 Google Play 游戏服务

pbootcms对接微信扫码登录代码核心片段和步骤(前后端)