Browse Source

add PingListener

master
lovebing 7 years ago
parent
commit
d3f63cb9d8
  1. 11
      src/main/java/com/corundumstudio/socketio/SocketIOServer.java
  2. 2
      src/main/java/com/corundumstudio/socketio/handler/PacketListener.java
  3. 2
      src/main/java/com/corundumstudio/socketio/listener/ClientListeners.java
  4. 5
      src/main/java/com/corundumstudio/socketio/listener/DefaultExceptionListener.java
  5. 2
      src/main/java/com/corundumstudio/socketio/listener/ExceptionListener.java
  6. 24
      src/main/java/com/corundumstudio/socketio/listener/PingListener.java
  7. 22
      src/main/java/com/corundumstudio/socketio/namespace/Namespace.java

11
src/main/java/com/corundumstudio/socketio/SocketIOServer.java

@ -15,6 +15,7 @@
*/
package com.corundumstudio.socketio;
import com.corundumstudio.socketio.listener.*;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.ChannelOption;
import io.netty.channel.EventLoopGroup;
@ -34,11 +35,6 @@ import java.util.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.corundumstudio.socketio.listener.ClientListeners;
import com.corundumstudio.socketio.listener.ConnectListener;
import com.corundumstudio.socketio.listener.DataListener;
import com.corundumstudio.socketio.listener.DisconnectListener;
import com.corundumstudio.socketio.listener.MultiTypeEventListener;
import com.corundumstudio.socketio.namespace.Namespace;
import com.corundumstudio.socketio.namespace.NamespacesHub;
@ -246,6 +242,11 @@ public class SocketIOServer implements ClientListeners {
mainNamespace.addConnectListener(listener);
}
@Override
public void addPingListeners(PingListener pingListener) {
mainNamespace.addPingListeners(pingListener);
}
@Override
public void addListeners(Object listeners) {
mainNamespace.addListeners(listeners);

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

@ -62,6 +62,8 @@ public class PacketListener {
} else {
client.getBaseClient().schedulePingTimeout();
}
Namespace namespace = namespacesHub.get(packet.getNsp());
namespace.onPing(client);
break;
}

2
src/main/java/com/corundumstudio/socketio/listener/ClientListeners.java

@ -25,6 +25,8 @@ public interface ClientListeners {
void addConnectListener(ConnectListener listener);
void addPingListeners(PingListener pingListener);
void addListeners(Object listeners);
void addListeners(Object listeners, Class<?> listenersClass);

5
src/main/java/com/corundumstudio/socketio/listener/DefaultExceptionListener.java

@ -43,6 +43,11 @@ public class DefaultExceptionListener extends ExceptionListenerAdapter {
log.error(e.getMessage(), e);
}
@Override
public void onPingException(Exception e, SocketIOClient client) {
log.error(e.getMessage(), e);
}
@Override
public boolean exceptionCaught(ChannelHandlerContext ctx, Throwable e) throws Exception {
log.error(e.getMessage(), e);

2
src/main/java/com/corundumstudio/socketio/listener/ExceptionListener.java

@ -29,6 +29,8 @@ public interface ExceptionListener {
void onConnectException(Exception e, SocketIOClient client);
void onPingException(Exception e, SocketIOClient client);
boolean exceptionCaught(ChannelHandlerContext ctx, Throwable e) throws Exception;
}

24
src/main/java/com/corundumstudio/socketio/listener/PingListener.java

@ -0,0 +1,24 @@
/**
* Copyright 2012 Nikita Koksharov
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.corundumstudio.socketio.listener;
import com.corundumstudio.socketio.SocketIOClient;
public interface PingListener {
void onPing(SocketIOClient client);
}

22
src/main/java/com/corundumstudio/socketio/namespace/Namespace.java

@ -34,11 +34,7 @@ import com.corundumstudio.socketio.MultiTypeArgs;
import com.corundumstudio.socketio.SocketIOClient;
import com.corundumstudio.socketio.SocketIONamespace;
import com.corundumstudio.socketio.annotation.ScannerEngine;
import com.corundumstudio.socketio.listener.ConnectListener;
import com.corundumstudio.socketio.listener.DataListener;
import com.corundumstudio.socketio.listener.DisconnectListener;
import com.corundumstudio.socketio.listener.ExceptionListener;
import com.corundumstudio.socketio.listener.MultiTypeEventListener;
import com.corundumstudio.socketio.listener.*;
import com.corundumstudio.socketio.protocol.JsonSupport;
import com.corundumstudio.socketio.protocol.Packet;
import com.corundumstudio.socketio.store.StoreFactory;
@ -62,6 +58,7 @@ public class Namespace implements SocketIONamespace {
private final ConcurrentMap<String, EventEntry<?>> eventListeners = PlatformDependent.newConcurrentHashMap();
private final Queue<ConnectListener> connectListeners = new ConcurrentLinkedQueue<ConnectListener>();
private final Queue<DisconnectListener> disconnectListeners = new ConcurrentLinkedQueue<DisconnectListener>();
private final Queue<PingListener> pingListeners = new ConcurrentLinkedQueue<PingListener>();
private final Map<UUID, SocketIOClient> allClients = PlatformDependent.newConcurrentHashMap();
private final ConcurrentMap<String, Set<UUID>> roomClients = PlatformDependent.newConcurrentHashMap();
@ -215,6 +212,21 @@ public class Namespace implements SocketIONamespace {
}
}
@Override
public void addPingListeners(PingListener pingListener) {
pingListeners.add(pingListener);
}
public void onPing(SocketIOClient client) {
try {
for (PingListener listener : pingListeners) {
listener.onPing(client);
}
} catch (Exception e) {
exceptionListener.onPingException(e, client);
}
}
@Override
public BroadcastOperations getBroadcastOperations() {
return new BroadcastOperations(allClients.values(), storeFactory);

Loading…
Cancel
Save