Adapt to changes in Argeo TP
[lgpl/argeo-commons.git] / org.argeo.cms.ee / src / org / argeo / cms / websocket / server / EventEndpoint.java
index c71c862d65c1cf195a8d0a7399a1ecfbd9a33f43..c0dc977547ef3abdda9c51bfe7896013d4de1de1 100644 (file)
@@ -1,9 +1,11 @@
 package org.argeo.cms.websocket.server;
 
 import java.io.IOException;
+import java.nio.channels.ClosedChannelException;
 import java.util.Map;
 
 import javax.websocket.OnClose;
+import javax.websocket.OnError;
 import javax.websocket.OnOpen;
 import javax.websocket.RemoteEndpoint;
 import javax.websocket.Session;
@@ -12,12 +14,14 @@ import javax.websocket.server.ServerEndpoint;
 
 import org.argeo.api.cms.CmsEventBus;
 import org.argeo.api.cms.CmsEventSubscriber;
+import org.argeo.api.cms.CmsLog;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.FrameworkUtil;
 
-@ServerEndpoint(value = "/event/{topic}", configurator = CmsWebSocketConfigurator.class)
+@ServerEndpoint(value = "/cms/status/event/{topic}", configurator = CmsWebSocketConfigurator.class)
 public class EventEndpoint implements CmsEventSubscriber {
-       private BundleContext bc = FrameworkUtil.getBundle(TestEndpoint.class).getBundleContext();
+       private final static CmsLog log = CmsLog.getLog(EventEndpoint.class);
+       private BundleContext bc = FrameworkUtil.getBundle(EventEndpoint.class).getBundleContext();
 
        private RemoteEndpoint.Basic remote;
        private CmsEventBus cmsEventBus;
@@ -47,4 +51,13 @@ public class EventEndpoint implements CmsEventSubscriber {
                        throw new IllegalStateException(e);
                }
        }
+
+       @OnError
+       public void onError(Throwable e) {
+               if (e instanceof ClosedChannelException) {
+                       // ignore, as it probably means ping was closed on the other side
+                       return;
+               }
+               log.error("Cannot process ping", e);
+       }
 }