package events; import java.net.URI; import java.util.Timer; import java.util.TimerTask; import javax.websocket.ClientEndpoint; import javax.websocket.CloseReason; import javax.websocket.OnClose; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; import events.collect.MessageHandler; import events.collect.SocketClientEndpoint; /** * WebSocket Client * * @author Vishnu Vettrivel */ @ClientEndpoint public class FakeClientEndpoint implements SocketClientEndpoint{ private Session userSession = null; private MessageHandler messageHandler; private Timer timer; public FakeClientEndpoint(URI endpointURI) { initialize(); } public void initialize() { try { onOpen(new FakeSession()); timer = new Timer("SocketTimer", true); timer.schedule(new TimerTask(){ @Override public void run() { onMessage(TestData.TEST_MESSAGE); } }, 1, 10); } catch (Exception e) { throw new RuntimeException(e); } } /** * Callback hook for Connection open events. * * @param userSession the userSession which is opened. */ @OnOpen public void onOpen(Session userSession) { System.out.println("opening websocket"); this.userSession = userSession; } /** * Callback hook for Connection close events. * * @param userSession the userSession which is getting closed. * @param reason the reason for connection close */ @OnClose public void onClose(Session userSession, CloseReason reason) { System.out.println("closing websocket"); this.userSession = null; } /** * Callback hook for Message Events. This method will be invoked when a client send a message. * * @param message The text message */ @OnMessage public void onMessage(String message) { if (this.messageHandler != null) { this.messageHandler.handleMessage(message); } } /** * register message handler * * @param message */ public void addMessageHandler(MessageHandler msgHandler) { this.messageHandler = msgHandler; } /** * Send a message. * * @param user * @param message */ public void sendMessage(String message) { this.userSession.getAsyncRemote().sendText(message); } public Session getUserSession() { return userSession; } }