package org.robotninjas.barge.jaxrs.ws; import org.eclipse.jetty.websocket.api.Session; import org.eclipse.jetty.websocket.api.WebSocketAdapter; /** */ public class EventSocket extends WebSocketAdapter { private final WsEventListener events; private final SessionToListener listenerFactory; private volatile Listener listener; public EventSocket(WsEventListener events) { this(events,new SessionToListener()); } public EventSocket(WsEventListener events, SessionToListener listenerFactory) { this.events = events; this.listenerFactory = listenerFactory; } @Override public void onWebSocketConnect(Session sess) { super.onWebSocketConnect(sess); listener = listenerFactory.createListener(sess); events.addClient(listener); } @Override public void onWebSocketText(String message) { // do nothing } @Override public void onWebSocketClose(int statusCode, String reason) { events.removeClient(listener); super.onWebSocketClose(statusCode, reason); } @Override public void onWebSocketError(Throwable cause) { events.removeClient(listener); events.error(this, cause); } }