Browse Source

Namespace disconnect fixed

master
Nikita 11 years ago
parent
commit
1143af0b8f
  1. 6
      src/main/java/com/corundumstudio/socketio/handler/PacketListener.java
  2. 3
      src/main/java/com/corundumstudio/socketio/protocol/PacketDecoder.java
  3. 7
      src/main/java/com/corundumstudio/socketio/transport/NamespaceClient.java

6
src/main/java/com/corundumstudio/socketio/handler/PacketListener.java

@ -78,6 +78,10 @@ public class PacketListener {
case MESSAGE: {
client.getBaseClient().schedulePingTimeout();
if (packet.getSubType() == PacketType.DISCONNECT) {
client.onDisconnect();
}
if (packet.getSubType() == PacketType.CONNECT) {
Namespace namespace = namespacesHub.get(packet.getNsp());
namespace.onConnect(client);
@ -101,7 +105,7 @@ public class PacketListener {
}
case CLOSE:
client.onDisconnect();
client.getBaseClient().onChannelDisconnect();
break;
default:

3
src/main/java/com/corundumstudio/socketio/protocol/PacketDecoder.java

@ -164,7 +164,8 @@ public class PacketDecoder {
}
if (packet.getType() == PacketType.MESSAGE) {
if (packet.getSubType() == PacketType.CONNECT) {
if (packet.getSubType() == PacketType.CONNECT
|| packet.getSubType() == PacketType.DISCONNECT) {
packet.setNsp(readString(frame));
}

7
src/main/java/com/corundumstudio/socketio/transport/NamespaceClient.java

@ -21,6 +21,9 @@ import java.util.Set;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicBoolean;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.corundumstudio.socketio.AckCallback;
import com.corundumstudio.socketio.HandshakeData;
import com.corundumstudio.socketio.SocketIOClient;
@ -32,6 +35,8 @@ import com.corundumstudio.socketio.protocol.PacketType;
public class NamespaceClient implements SocketIOClient {
private final Logger log = LoggerFactory.getLogger(getClass());
private final AtomicBoolean disconnected = new AtomicBoolean();
private final ClientHead baseClient;
private final Namespace namespace;
@ -108,6 +113,8 @@ public class NamespaceClient implements SocketIOClient {
baseClient.removeNamespaceClient(this);
namespace.onDisconnect(this);
log.debug("Client {} for namespace {} has been disconnected", baseClient.getSessionId(), getNamespace().getName());
}
@Override

Loading…
Cancel
Save