package com.dragome.web.serverside.debugging.websocket; import java.io.IOException; import java.util.logging.Logger; import javax.websocket.CloseReason; import javax.websocket.Session; import com.dragome.services.WebServiceLocator; import com.dragome.web.debugging.messages.ChannelReceiverImpl; import com.dragome.web.debugging.messages.Receiver; import com.dragome.web.debugging.messages.Sender; public class DragomeDebugServerEndpoint { private Logger logger= Logger.getLogger(this.getClass().getName()); public void onOpen(final Session session) { Receiver configuredReceiver= WebServiceLocator.getInstance().getServerToClientMessageChannel().getReceiver(); if (!(configuredReceiver instanceof ChannelReceiverImpl)) WebServiceLocator.getInstance().getServerToClientMessageChannel().setReceiver(new ChannelReceiverImpl()); else configuredReceiver.reset(); WebServiceLocator.getInstance().getServerToClientMessageChannel().setSender(new Sender() { public void send(String aMessage) { try { session.getBasicRemote().sendText(aMessage); } catch (IOException e) { throw new RuntimeException(e); } } }); WebServiceLocator.getInstance().getServerToClientMessageChannel().getReceiver().reset(); } public String onMessage(String message, Session session) { WebServiceLocator.getInstance().getServerToClientMessageChannel().getReceiver().messageReceived(message); return null; } public void onClose(Session session, CloseReason closeReason) { logger.info(String.format("Session %s closed because of %s", session.getId(), closeReason)); } }