下面列出了 io.netty.handler.codec.mqtt.MqttUnsubAckMessage #io.netty.handler.codec.mqtt.MqttUnsubscribePayload 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public void processRequest(ChannelHandlerContext ctx, MqttMessage mqttMessage) {
MqttUnsubscribeMessage unsubscribeMessage = (MqttUnsubscribeMessage) mqttMessage;
MqttUnsubscribePayload unsubscribePayload = unsubscribeMessage.payload();
List<String> topics = unsubscribePayload.topics();
String clientId = NettyUtil.getClientId(ctx.channel());
ClientSession clientSession = ConnectManager.getInstance().getClient(clientId);
if(Objects.isNull(clientSession)){
log.warn("[UnSubscribe] -> The client is not online.clientId={}",clientId);
}
topics.forEach( topic -> {
subscriptionMatcher.unSubscribe(topic,clientId);
subscriptionStore.removeSubscription(clientId,topic);
//停止发送系统信息
if(SysToipc.SYS.equals(topic)) {
sysMessageService.removeClient(clientSession.getClientId());
}
});
MqttUnsubAckMessage unsubAckMessage = MessageUtil.getUnSubAckMessage(MessageUtil.getMessageId(mqttMessage));
ctx.writeAndFlush(unsubAckMessage);
}
@Override
public void processRequest(ChannelHandlerContext ctx, MqttMessage mqttMessage) {
MqttUnsubscribeMessage unsubscribeMessage = (MqttUnsubscribeMessage) mqttMessage;
MqttUnsubscribePayload unsubscribePayload = unsubscribeMessage.payload();
List<String> topics = unsubscribePayload.topics();
String clientId = NettyUtil.getClientId(ctx.channel());
ClientSession clientSession = ConnectManager.getInstance().getClient(clientId);
if(Objects.isNull(clientSession)){
log.warn("[UnSubscribe] -> The client is not online.clientId={}",clientId);
}
topics.forEach( topic -> {
subscriptionMatcher.unSubscribe(topic,clientId);
subscriptionStore.removeSubscription(clientId,topic);
});
MqttUnsubAckMessage unsubAckMessage = MessageUtil.getUnSubAckMessage(MessageUtil.getMessageId(mqttMessage));
ctx.writeAndFlush(unsubAckMessage);
}
public static MqttUnsubscribeMessage unSubscribeMessage(List<String> topic, int messageId) {
MqttFixedHeader mqttFixedHeader = new MqttFixedHeader(MqttMessageType.UNSUBSCRIBE, false, MqttQoS.AT_MOST_ONCE,
false, 0x02);
MqttMessageIdVariableHeader variableHeader = MqttMessageIdVariableHeader.from(messageId);
MqttUnsubscribePayload mqttUnsubscribeMessage = new MqttUnsubscribePayload(topic);
return new MqttUnsubscribeMessage(mqttFixedHeader, variableHeader, mqttUnsubscribeMessage);
}