类 io.netty.handler.codec.mqtt.MqttUnsubscribePayload 源码实例Demo

下面列出了怎么用 io.netty.handler.codec.mqtt.MqttUnsubscribePayload 的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: iot-mqtt   文件: UnSubscribeProcessor.java

@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);
}
 
源代码2 项目: jmqtt   文件: UnSubscribeProcessor.java

@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);
}
 
 类所在包
 同包方法