diff --git a/pom.xml b/pom.xml
index 683d09743..a40eb2d31 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
com.corundumstudio.socketio
netty-socketio
- 1.7.20-SNAPSHOT
+ 1.7.20
bundle
NettySocketIO
Socket.IO server implemented on Java
@@ -85,37 +85,37 @@
io.netty
netty-buffer
- 4.1.73.Final
+ 4.1.74.Final
io.netty
netty-common
- 4.1.73.Final
+ 4.1.74.Final
io.netty
netty-transport
- 4.1.73.Final
+ 4.1.74.Final
io.netty
netty-handler
- 4.1.73.Final
+ 4.1.74.Final
io.netty
netty-codec-http
- 4.1.73.Final
+ 4.1.74.Final
io.netty
netty-codec
- 4.1.73.Final
+ 4.1.74.Final
io.netty
netty-transport-native-epoll
- 4.1.73.Final
+ 4.1.74.Final
@@ -134,31 +134,31 @@
org.slf4j
slf4j-api
- 1.7.33
+ 1.7.36
com.fasterxml.jackson.core
jackson-core
- 2.13.1
+ 2.13.2
com.fasterxml.jackson.core
jackson-databind
- 2.13.1
+ 2.13.2
org.springframework
spring-beans
- 5.3.14
+ 5.3.16
provided
org.springframework
spring-core
- 5.3.14
+ 5.3.16
commons-logging
@@ -172,7 +172,7 @@
org.redisson
redisson
- 3.16.7
+ 3.16.8
provided
diff --git a/src/main/java/com/corundumstudio/socketio/ClientOperations.java b/src/main/java/com/corundumstudio/socketio/ClientOperations.java
index dc576608f..4157d769a 100644
--- a/src/main/java/com/corundumstudio/socketio/ClientOperations.java
+++ b/src/main/java/com/corundumstudio/socketio/ClientOperations.java
@@ -38,6 +38,12 @@ public interface ClientOperations {
*/
void disconnect();
+ /**
+ * Disconnect client
+ *
+ */
+ void close();
+
/**
* Send event
*
diff --git a/src/main/java/com/corundumstudio/socketio/MultiRoomBroadcastOperations.java b/src/main/java/com/corundumstudio/socketio/MultiRoomBroadcastOperations.java
index aee3e054d..d941e33b8 100644
--- a/src/main/java/com/corundumstudio/socketio/MultiRoomBroadcastOperations.java
+++ b/src/main/java/com/corundumstudio/socketio/MultiRoomBroadcastOperations.java
@@ -105,6 +105,16 @@ public void disconnect() {
}
}
+ @Override
+ public void close() {
+ if( this.broadcastOperations == null || this.broadcastOperations.size() == 0 ) {
+ return;
+ }
+ for( BroadcastOperations b : this.broadcastOperations ) {
+ b.close();
+ }
+ }
+
@Override
public void sendEvent(String name, Object... data) {
if( this.broadcastOperations == null || this.broadcastOperations.size() == 0 ) {
diff --git a/src/main/java/com/corundumstudio/socketio/SingleRoomBroadcastOperations.java b/src/main/java/com/corundumstudio/socketio/SingleRoomBroadcastOperations.java
index a0c871908..cd1240fc3 100644
--- a/src/main/java/com/corundumstudio/socketio/SingleRoomBroadcastOperations.java
+++ b/src/main/java/com/corundumstudio/socketio/SingleRoomBroadcastOperations.java
@@ -77,6 +77,13 @@ public void disconnect() {
}
}
+ @Override
+ public void close() {
+ for (SocketIOClient client : clients) {
+ client.close();
+ }
+ }
+
@Override
public void sendEvent(String name, SocketIOClient excludedClient, Object... data) {
Packet packet = new Packet(PacketType.MESSAGE);
diff --git a/src/main/java/com/corundumstudio/socketio/SocketIOServer.java b/src/main/java/com/corundumstudio/socketio/SocketIOServer.java
index 83f4b92ab..fbbb37331 100644
--- a/src/main/java/com/corundumstudio/socketio/SocketIOServer.java
+++ b/src/main/java/com/corundumstudio/socketio/SocketIOServer.java
@@ -248,12 +248,22 @@ public void addEventListener(String eventName, Class eventClass, DataList
mainNamespace.addEventListener(eventName, eventClass, listener);
}
+ @Override
+ public void removeEventListener(DataListener listener) {
+ mainNamespace.removeEventListener(listener);
+ }
+
@Override
public void addEventInterceptor(EventInterceptor eventInterceptor) {
mainNamespace.addEventInterceptor(eventInterceptor);
}
+ @Override
+ public void removeEventInterceptor(EventInterceptor eventInterceptor) {
+ mainNamespace.removeEventInterceptor(eventInterceptor);
+ }
+
@Override
public void removeAllListeners(String eventName) {
@@ -265,25 +275,39 @@ public void addDisconnectListener(DisconnectListener listener) {
mainNamespace.addDisconnectListener(listener);
}
+ @Override
+ public void removeDisconnectListener(DisconnectListener listener) {
+ mainNamespace.removeDisconnectListener(listener);
+ }
+
@Override
public void addConnectListener(ConnectListener listener) {
mainNamespace.addConnectListener(listener);
}
+ @Override
+ public void removeConnectListener(ConnectListener listener) {
+ mainNamespace.removeConnectListener(listener);
+ }
+
@Override
public void addPingListener(PingListener listener) {
mainNamespace.addPingListener(listener);
}
+ @Override
+ public void removePingListener(PingListener listener) {
+ mainNamespace.removePingListener(listener);
+ }
+
@Override
public void addListeners(Object listeners) {
mainNamespace.addListeners(listeners);
}
-
+
@Override
public void addListeners(Object listeners, Class> listenersClass) {
mainNamespace.addListeners(listeners, listenersClass);
}
-
}
diff --git a/src/main/java/com/corundumstudio/socketio/listener/ClientListeners.java b/src/main/java/com/corundumstudio/socketio/listener/ClientListeners.java
index af6b82a2c..20b1b6c06 100644
--- a/src/main/java/com/corundumstudio/socketio/listener/ClientListeners.java
+++ b/src/main/java/com/corundumstudio/socketio/listener/ClientListeners.java
@@ -22,14 +22,24 @@ public interface ClientListeners {
void addEventListener(String eventName, Class eventClass, DataListener listener);
+ void removeEventListener(DataListener listener);
+
void addEventInterceptor(EventInterceptor eventInterceptor);
+ void removeEventInterceptor(EventInterceptor eventInterceptor);
+
void addDisconnectListener(DisconnectListener listener);
+ void removeDisconnectListener(DisconnectListener listener);
+
void addConnectListener(ConnectListener listener);
+ void removeConnectListener(ConnectListener listener);
+
void addPingListener(PingListener listener);
+ void removePingListener(PingListener listener);
+
void addListeners(Object listeners);
void addListeners(Object listeners, Class> listenersClass);
diff --git a/src/main/java/com/corundumstudio/socketio/namespace/Namespace.java b/src/main/java/com/corundumstudio/socketio/namespace/Namespace.java
index 97057dd0e..132b702af 100644
--- a/src/main/java/com/corundumstudio/socketio/namespace/Namespace.java
+++ b/src/main/java/com/corundumstudio/socketio/namespace/Namespace.java
@@ -128,11 +128,35 @@ public void addEventListener(String eventName, Class eventClass, DataList
jsonSupport.addEventMapping(name, eventName, eventClass);
}
+ @Override
+ public void removeEventListener(DataListener listener) {
+ List needRemove = new ArrayList();
+
+ for (Map.Entry> entry : eventListeners.entrySet()) {
+ if(entry.getValue().getListeners().contains(listener)){
+ entry.getValue().getListeners().remove(listener);
+ }
+ if(entry.getValue().getListeners().size() == 0){
+ needRemove.add(entry.getKey());
+ }
+ }
+
+ for(String eventName : needRemove){
+ eventListeners.remove(eventName);
+ jsonSupport.removeEventMapping(name, eventName);
+ }
+ }
+
@Override
public void addEventInterceptor(EventInterceptor eventInterceptor) {
eventInterceptors.add(eventInterceptor);
}
+ @Override
+ public void removeEventInterceptor(EventInterceptor eventInterceptor) {
+ eventInterceptors.remove(eventInterceptor);
+ }
+
@SuppressWarnings({"rawtypes", "unchecked"})
public void onEvent(NamespaceClient client, String eventName, List