diff --git a/src/main/java/com/corundumstudio/socketio/SocketIOClient.java b/src/main/java/com/corundumstudio/socketio/SocketIOClient.java
index d443632..0823ec8 100644
--- a/src/main/java/com/corundumstudio/socketio/SocketIOClient.java
+++ b/src/main/java/com/corundumstudio/socketio/SocketIOClient.java
@@ -25,11 +25,11 @@ public interface SocketIOClient extends ClientOperations {
/**
* Current client transport protocol
- *
+ *
* @return transport protocol
*/
Transport getTransport();
-
+
/**
* Send event with ack callback
*
@@ -84,4 +84,11 @@ public interface SocketIOClient extends ClientOperations {
*/
SocketAddress getRemoteAddress();
+ /**
+ * Check is underlying channel open
+ *
+ * @return true
if channel open, otherwise false
+ */
+ boolean isChannelOpen();
+
}
diff --git a/src/main/java/com/corundumstudio/socketio/transport/BaseClient.java b/src/main/java/com/corundumstudio/socketio/transport/BaseClient.java
index 5cbfe97..f10f818 100644
--- a/src/main/java/com/corundumstudio/socketio/transport/BaseClient.java
+++ b/src/main/java/com/corundumstudio/socketio/transport/BaseClient.java
@@ -49,7 +49,7 @@ public abstract class BaseClient {
private final AckManager ackManager;
private final UUID sessionId;
private final Transport transport;
- protected Channel channel;
+ private Channel channel;
public BaseClient(UUID sessionId, AckManager ackManager, DisconnectableHub disconnectable, Transport transport) {
this.sessionId = sessionId;
@@ -61,7 +61,7 @@ public abstract class BaseClient {
public Transport getTransport() {
return transport;
}
-
+
public abstract ChannelFuture send(Packet packet);
public void removeChildClient(SocketIOClient client) {
@@ -112,4 +112,12 @@ public abstract class BaseClient {
onChannelDisconnect();
}
+ Channel getChannel() {
+ return channel;
+ }
+
+ void setChannel(Channel channel) {
+ this.channel = channel;
+ }
+
}
diff --git a/src/main/java/com/corundumstudio/socketio/transport/NamespaceClient.java b/src/main/java/com/corundumstudio/socketio/transport/NamespaceClient.java
index f18a19d..ba8ff87 100644
--- a/src/main/java/com/corundumstudio/socketio/transport/NamespaceClient.java
+++ b/src/main/java/com/corundumstudio/socketio/transport/NamespaceClient.java
@@ -40,11 +40,18 @@ public class NamespaceClient implements SocketIOClient {
public BaseClient getBaseClient() {
return baseClient;
}
-
+
+ @Override
public Transport getTransport() {
return baseClient.getTransport();
}
+ @Override
+ public boolean isChannelOpen() {
+ return baseClient.getChannel().isOpen();
+ }
+
+ @Override
public Namespace getNamespace() {
return namespace;
}
diff --git a/src/main/java/com/corundumstudio/socketio/transport/WebSocketClient.java b/src/main/java/com/corundumstudio/socketio/transport/WebSocketClient.java
index 4f61489..8ecd8c8 100644
--- a/src/main/java/com/corundumstudio/socketio/transport/WebSocketClient.java
+++ b/src/main/java/com/corundumstudio/socketio/transport/WebSocketClient.java
@@ -28,19 +28,15 @@ import com.corundumstudio.socketio.parser.Packet;
public class WebSocketClient extends BaseClient {
- public WebSocketClient(Channel channel, AckManager ackManager,
+ public WebSocketClient(Channel channel, AckManager ackManager,
DisconnectableHub disconnectable, UUID sessionId,
Transport transport) {
super(sessionId, ackManager, disconnectable, transport);
- this.channel = channel;
- }
-
- public Channel getChannel() {
- return channel;
+ setChannel(channel);
}
public ChannelFuture send(Packet packet) {
- return channel.write(new WebSocketPacketMessage(getSessionId(), packet));
+ return getChannel().write(new WebSocketPacketMessage(getSessionId(), packet));
}
}
diff --git a/src/main/java/com/corundumstudio/socketio/transport/XHRPollingClient.java b/src/main/java/com/corundumstudio/socketio/transport/XHRPollingClient.java
index 69380f1..5ebd657 100644
--- a/src/main/java/com/corundumstudio/socketio/transport/XHRPollingClient.java
+++ b/src/main/java/com/corundumstudio/socketio/transport/XHRPollingClient.java
@@ -37,7 +37,7 @@ public class XHRPollingClient extends BaseClient {
public void update(Channel channel, String origin) {
this.origin = origin;
- this.channel = channel;
+ setChannel(channel);
channel.write(new XHRNewChannelMessage(getSessionId(), origin));
}
@@ -46,7 +46,7 @@ public class XHRPollingClient extends BaseClient {
}
public ChannelFuture send(Packet packet) {
- return channel.write(new XHRPacketMessage(getSessionId(), origin, packet));
+ return getChannel().write(new XHRPacketMessage(getSessionId(), origin, packet));
}
}