Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add remove methode for listener #845

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 14 additions & 14 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

<groupId>com.corundumstudio.socketio</groupId>
<artifactId>netty-socketio</artifactId>
<version>1.7.20-SNAPSHOT</version>
<version>1.7.20</version>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this change is don't need to update.

<packaging>bundle</packaging>
<name>NettySocketIO</name>
<description>Socket.IO server implemented on Java</description>
Expand Down Expand Up @@ -85,37 +85,37 @@
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-buffer</artifactId>
<version>4.1.73.Final</version>
<version>4.1.74.Final</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-common</artifactId>
<version>4.1.73.Final</version>
<version>4.1.74.Final</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-transport</artifactId>
<version>4.1.73.Final</version>
<version>4.1.74.Final</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-handler</artifactId>
<version>4.1.73.Final</version>
<version>4.1.74.Final</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-codec-http</artifactId>
<version>4.1.73.Final</version>
<version>4.1.74.Final</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-codec</artifactId>
<version>4.1.73.Final</version>
<version>4.1.74.Final</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-transport-native-epoll</artifactId>
<version>4.1.73.Final</version>
<version>4.1.74.Final</version>
</dependency>

<dependency>
Expand All @@ -134,31 +134,31 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.33</version>
<version>1.7.36</version>
</dependency>

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.13.1</version>
<version>2.13.2</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.1</version>
<version>2.13.2</version>
</dependency>


<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.3.14</version>
<version>5.3.16</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.14</version>
<version>5.3.16</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
Expand All @@ -172,7 +172,7 @@
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.16.7</version>
<version>3.16.8</version>
<scope>provided</scope>
</dependency>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,12 @@ public interface ClientOperations {
*/
void disconnect();

/**
* Disconnect client
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's different with disconnect() ? it's possible to add this change to disconnect ?

*
*/
void close();

/**
* Send event
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 ) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
28 changes: 26 additions & 2 deletions src/main/java/com/corundumstudio/socketio/SocketIOServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -248,12 +248,22 @@ public <T> void addEventListener(String eventName, Class<T> 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) {
Expand All @@ -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);
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,24 @@ public interface ClientListeners {

<T> void addEventListener(String eventName, Class<T> eventClass, DataListener<T> 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);
Expand Down
39 changes: 39 additions & 0 deletions src/main/java/com/corundumstudio/socketio/namespace/Namespace.java
Original file line number Diff line number Diff line change
Expand Up @@ -128,11 +128,35 @@ public <T> void addEventListener(String eventName, Class<T> eventClass, DataList
jsonSupport.addEventMapping(name, eventName, eventClass);
}

@Override
public void removeEventListener(DataListener listener) {
List<String> needRemove = new ArrayList<String>();

for (Map.Entry<String, EventEntry<?>> entry : eventListeners.entrySet()) {
if(entry.getValue().getListeners().contains(listener)){
entry.getValue().getListeners().remove(listener);
}
if(entry.getValue().getListeners().size() == 0){
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO,Use isEmpty would be great.

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<Object> args, AckRequest ackRequest) {
EventEntry entry = eventListeners.get(eventName);
Expand Down Expand Up @@ -184,6 +208,11 @@ public void addDisconnectListener(DisconnectListener listener) {
disconnectListeners.add(listener);
}

@Override
public void removeDisconnectListener(DisconnectListener listener) {
disconnectListeners.remove(listener);
}

public void onDisconnect(SocketIOClient client) {
Set<String> joinedRooms = client.getAllRooms();
allClients.remove(client.getSessionId());
Expand All @@ -209,6 +238,11 @@ public void addConnectListener(ConnectListener listener) {
connectListeners.add(listener);
}

@Override
public void removeConnectListener(ConnectListener listener) {
connectListeners.remove(listener);
}

public void onConnect(SocketIOClient client) {
join(getName(), client.getSessionId());
storeFactory.pubSubStore().publish(PubSubType.JOIN, new JoinLeaveMessage(client.getSessionId(), getName(), getName()));
Expand All @@ -227,6 +261,11 @@ public void addPingListener(PingListener listener) {
pingListeners.add(listener);
}

@Override
public void removePingListener(PingListener listener) {
pingListeners.remove(listener);
}

public void onPing(SocketIOClient client) {
try {
for (PingListener listener : pingListeners) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,12 @@ public void disconnect() {
Packet packet = new Packet(PacketType.MESSAGE);
packet.setSubType(PacketType.DISCONNECT);
send(packet);
// onDisconnect();
//onDisconnect();
}

@Override
public void close() {
getBaseClient().disconnect();
}

@Override
Expand Down