android 推送消息 服务端c,基于SpringBoot搭建极光推送安卓和IOS消息的Demo

private static Logger logger = LoggerFactory.getLogger(MqttMessageServer.class);private static MqttClient mqttClient = null;private static int allQos = 2;private MemoryPersistence persistence = newMemoryPersistence();private final BlockingQueue messageQueue = new LinkedBlockingQueue();

@ResourceprivateMqttConfiguration mqttConfiguration;

@ResourceprivateMqttMessageProcessService mqttMessageProcessService;

@Overridepublic void run(ApplicationArguments args) throwsException {

String clientUrl=mqttConfiguration.getClientUrl();

String clientTopic=mqttConfiguration.getClientTopic();

String clientId=mqttConfiguration.getClientId();//初始化参数

MqttConnectOptions connOpts = newMqttConnectOptions();

connOpts.setCleanSession(true);

connOpts.setConnectionTimeout(30);

connOpts.setKeepAliveInterval(60);

connOpts.setAutomaticReconnect(true);try{

mqttClient= newMqttClient(clientUrl, clientId, persistence);

mqttClient.setCallback(newMqttCallbackExtended() {

@Overridepublic void connectComplete(booleanarg0, String arg1) {//订阅主题

subscribeInformation(mqttClient,clientTopic, allQos);

logger.info(">>>>>>>>订阅所有主题成功>>>>>>>>");

}

@Overridepublic voidconnectionLost(Throwable throwable) {

logger.info(">>>>>>>>MQTT服务器失去连接!!!>>>>>>>>");

}

@Overridepublic void messageArrived(String topic, MqttMessage mqttMessage) throwsException {

System.err.println("========================");

logger.info(">>>>>>>>接收到MQTT推送的消息:" +topic);

logger.info(">>>>>>>>接收到MQTT推送的消息内容:" + new String(mqttMessage.getPayload(), 0, mqttMessage.getPayload().length,"UTF-8"));

PostedMsg postedMsg= newPostedMsg(mqttMessage,topic);

messageQueue.offer(postedMsg);

}

@Overridepublic voiddeliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {

logger.info("deliveryComplete:" +iMqttDeliveryToken.getMessageId());

}

});

mqttClient.connect(connOpts);

logger.info(">>>>>>>>连接MQTT服务器成功!!!,连接信息:"+clientUrl);

Executors.newSingleThreadExecutor().execute(newRunnable() {

@Overridepublic voidrun() {while (true) {try{

PostedMsg msg=(PostedMsg) messageQueue.take();if (msg != null) {

MqttMessage mqttMessage=(MqttMessage) msg.getMsg();

String strRevMsg= null;try{

strRevMsg= new String(mqttMessage.getPayload(), 0, mqttMessage.getPayload().length,"UTF-8");

}catch(UnsupportedEncodingException e) {

e.printStackTrace();

}

mqttMessageProcessService.processMqttMsg(msg.getTopic(), strRevMsg);

}

}catch(Exception e) {

e.printStackTrace();

}

}

}

});//缓存MqttClient实例在Map中

GlobalHashMap.mqttClientMap.put("mqttClient", mqttClient);

}catch(MqttException e) {

e.printStackTrace();

}

}private void subscribeInformation(MqttClient mqttClient,String allTopics,intallQos) {try{

mqttClient.subscribe(allTopics, allQos);

}catch(MqttException e) {

e.printStackTrace();

}

}/*** PUSH消息MQTT*/

public void sendMqttMessage(String content, intqos, String topic) {try{

MqttMessage message= new MqttMessage(content.getBytes("UTF-8"));

message.setQos(qos);

message.setRetained(false);

mqttClient.publish(topic, message);

}catch(Exception e) {

e.printStackTrace();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值