]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms.ee/src/org/argeo/cms/websocket/server/EventEndpoint.java
1 package org
.argeo
.cms
.websocket
.server
;
3 import java
.io
.IOException
;
6 import javax
.websocket
.OnClose
;
7 import javax
.websocket
.OnOpen
;
8 import javax
.websocket
.RemoteEndpoint
;
9 import javax
.websocket
.Session
;
10 import javax
.websocket
.server
.PathParam
;
11 import javax
.websocket
.server
.ServerEndpoint
;
13 import org
.argeo
.api
.cms
.CmsContext
;
14 import org
.argeo
.api
.cms
.CmsEventSubscriber
;
15 import org
.osgi
.framework
.BundleContext
;
16 import org
.osgi
.framework
.FrameworkUtil
;
18 @ServerEndpoint(value
= "/event/{topic}", configurator
= CmsWebSocketConfigurator
.class)
19 public class EventEndpoint
implements CmsEventSubscriber
{
20 private BundleContext bc
= FrameworkUtil
.getBundle(TestEndpoint
.class).getBundleContext();
22 private RemoteEndpoint
.Basic remote
;
23 private CmsContext cmsContext
;
25 // private String topic = "cms";
28 public void onOpen(Session session
, @PathParam("topic") String topic
) {
30 cmsContext
= bc
.getService(bc
.getServiceReference(CmsContext
.class));
31 cmsContext
.addEventSubscriber(topic
, this);
33 remote
= session
.getBasicRemote();
38 public void onClose(@PathParam("topic") String topic
) {
39 cmsContext
.removeEventSubscriber(topic
, this);
43 public void onEvent(String topic
, Map
<String
, Object
> properties
) {
45 remote
.sendText(topic
+ ": " + properties
);
46 } catch (IOException e
) {
47 throw new IllegalStateException(e
);