X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms.ee%2Fsrc%2Forg%2Fargeo%2Fcms%2Fwebsocket%2Fserver%2FEventEndpoint.java;h=defc59efcadf1e49926f373fe97781eecdf4c89e;hb=de8f04a41db19968896b15cd7f43c819a28e7158;hp=a6b2a4df75c87a03c501f034f11f84de8243706e;hpb=60aa2e64061a09e938d9f6cba35ee3fd66a19828;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms.ee/src/org/argeo/cms/websocket/server/EventEndpoint.java b/org.argeo.cms.ee/src/org/argeo/cms/websocket/server/EventEndpoint.java index a6b2a4df7..defc59efc 100644 --- a/org.argeo.cms.ee/src/org/argeo/cms/websocket/server/EventEndpoint.java +++ b/org.argeo.cms.ee/src/org/argeo/cms/websocket/server/EventEndpoint.java @@ -1,34 +1,38 @@ 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; import javax.websocket.server.PathParam; import javax.websocket.server.ServerEndpoint; -import org.argeo.api.cms.CmsContext; +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; - private CmsContext cmsContext; + private CmsEventBus cmsEventBus; // private String topic = "cms"; @OnOpen public void onOpen(Session session, @PathParam("topic") String topic) { if (bc != null) { - cmsContext = bc.getService(bc.getServiceReference(CmsContext.class)); - cmsContext.addEventSubscriber(topic, this); + cmsEventBus = bc.getService(bc.getServiceReference(CmsEventBus.class)); + cmsEventBus.addEventSubscriber(topic, this); } remote = session.getBasicRemote(); @@ -36,7 +40,7 @@ public class EventEndpoint implements CmsEventSubscriber { @OnClose public void onClose(@PathParam("topic") String topic) { - cmsContext.removeEventSubscriber(topic, this); + cmsEventBus.removeEventSubscriber(topic, this); } @Override @@ -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); + } }