使用MQTT协议的订阅发布模式,实现从服务器推送消息到客户端功能。

1、服务端需要先使用Apollo作为代理服务器来发消息,参考此文即可搭建:
https://blog.csdn.net/marrn/article/details/71141122?utm_source=itdadao&utm_medium=referral
2、PC端通过java代码,通过MQTT协议来连接服务器,然后在根据界面动作 ,发布消息;

3、手机端设置相同的连接主题参数,订阅消息。

关键代码:

PC端

//服务器端口 账号 密码 private String host = "tcp://127.0.0.1:61613"; private String userName = "admin"; private String passWord = "123";

//客户端对象、主题、发布消息、共同主题 private MqttClient client; private MqttTopic topic; private MqttMessage message; private String myTopic = "test/topic";

        //创建客户端 client = new MqttClient(host, "Server", new MemoryPersistence());

private void connect() {
//设置连接参数
MqttConnectOptions options = new MqttConnectOptions();
options.setCleanSession(false);
options.setUserName(userName);
options.setPassword(passWord.toCharArray());
// 设置超时时间
options.setConnectionTimeout(10);
// 设置会话心跳时间
options.setKeepAliveInterval(20);
try {
//设置客户端回掉
client.setCallback(new MqttCallback() {


@Override
public void connectionLost(Throwable cause) {
System.out.println("connectionLost-----------");
}


@Override
public void deliveryComplete(IMqttDeliveryToken token) {
System.out.println("deliveryComplete---------"
+ token.isComplete());
}


@Override
public void messageArrived(String topic, MqttMessage arg1)
throws Exception {
System.out.println("messageArrived----------");


}
});


topic = client.getTopic(myTopic);
System.out.println("------topic=" + topic.toString());

message = new MqttMessage();
message.setQos(1);
message.setRetained(true);
System.out.println("------ratained状态" + message.isRetained());
message.setPayload("msg-hnac".getBytes());
//连接
client.connect(options);
} catch (Exception e) {
e.printStackTrace();
}

}



手机端也类似,配置相同的IP和端口,设置连接参数之后,需要进行订阅:

            // 订阅主题

            client.subscribe(PushConfig.myTopic, 1);


然后PC端delivery后,手机端arrived, 实现推送接收功能。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值