diff --git a/broker/src/main/java/io/moquette/imhandler/DisconnectHandler.java b/broker/src/main/java/io/moquette/imhandler/DisconnectHandler.java new file mode 100644 index 00000000..7ea18081 --- /dev/null +++ b/broker/src/main/java/io/moquette/imhandler/DisconnectHandler.java @@ -0,0 +1,33 @@ +/* + * This file is part of the Wildfire Chat package. + * (c) Heavyrain2012 + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +package io.moquette.imhandler; + +import cn.wildfirechat.common.ErrorCode; +import cn.wildfirechat.proto.WFCMessage; +import com.hazelcast.util.StringUtil; +import com.xiaoleilu.loServer.model.FriendData; +import io.moquette.spi.impl.Qos1PublishHandler; +import io.netty.buffer.ByteBuf; +import win.liyufan.im.IMTopic; + +import java.util.List; + +@Handler(value = IMTopic.ClearSessionTopic) +public class DisconnectHandler extends IMHandler { + @Override + public ErrorCode action(ByteBuf ackPayload, String clientID, String fromUser, boolean isAdmin, Byte request, Qos1PublishHandler.IMCallback callback) { + if (request == 8) { + m_sessionsStore.cleanSession(fromUser, clientID); + } else if(request == 1) { + m_sessionsStore.disableSession(fromUser, clientID); + } + + return ErrorCode.ERROR_CODE_SUCCESS; + } +}