Improve Jetty integration in order to support consistent HTTP sessions.
[lgpl/argeo-commons.git] / org.argeo.cms.ee / src / org / argeo / cms / websocket / server / EventEndpoint.java
index c71c862d65c1cf195a8d0a7399a1ecfbd9a33f43..defc59efcadf1e49926f373fe97781eecdf4c89e 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,11 +14,13 @@ 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 final static CmsLog log = CmsLog.getLog(EventEndpoint.class);
        private BundleContext bc = FrameworkUtil.getBundle(TestEndpoint.class).getBundleContext();
 
        private RemoteEndpoint.Basic remote;
@@ -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);
+       }
 }