use of org.atmosphere.websocket.WebSocket in project camel by apache.
the class MemoryWebSocketStoreTest method testAddAndRemove.
@Test
public void testAddAndRemove() throws Exception {
MemoryWebSocketStore store = new MemoryWebSocketStore();
WebSocket webSocket1 = EasyMock.createMock(WebSocket.class);
WebSocket webSocket2 = EasyMock.createMock(WebSocket.class);
String connectionKey1 = UUID.randomUUID().toString();
String connectionKey2 = UUID.randomUUID().toString();
store.addWebSocket(connectionKey1, webSocket1);
verifyGet(store, connectionKey1, webSocket1, true);
assertEquals(1, store.getAllWebSockets().size());
store.addWebSocket(connectionKey2, webSocket2);
verifyGet(store, connectionKey2, webSocket2, true);
verifyGet(store, connectionKey1, webSocket1, true);
assertEquals(2, store.getAllWebSockets().size());
store.removeWebSocket(connectionKey1);
verifyGet(store, connectionKey1, webSocket1, false);
store.removeWebSocket(webSocket2);
verifyGet(store, connectionKey2, webSocket2, false);
assertEquals(0, store.getAllWebSockets().size());
}
use of org.atmosphere.websocket.WebSocket in project atmosphere by Atmosphere.
the class WebSocketProcessorTest method basicBackwardCompatbileWorkflow.
@Test
public void basicBackwardCompatbileWorkflow() throws Throwable {
ByteArrayOutputStream b = new ByteArrayOutputStream();
final WebSocket w = new ArrayBaseWebSocket(b);
final WebSocketProcessor processor = WebSocketProcessorFactory.getDefault().getWebSocketProcessor(framework);
framework.getBroadcasterFactory().remove("/*");
framework.addInitParameter(ApplicationConfig.BACKWARD_COMPATIBLE_WEBSOCKET_BEHAVIOR, "true").addAtmosphereHandler("/*", new AtmosphereHandler() {
@Override
public void onRequest(AtmosphereResource resource) throws IOException {
resource.getBroadcaster().addAtmosphereResource(resource);
resource.getResponse().write(resource.getRequest().getReader().readLine());
}
@Override
public void onStateChange(AtmosphereResourceEvent event) throws IOException {
event.getResource().write(event.getMessage().toString().getBytes());
}
@Override
public void destroy() {
}
});
AtmosphereRequest request = new AtmosphereRequestImpl.Builder().destroyable(false).body("yoComet").pathInfo("/a").build();
processor.open(w, request, AtmosphereResponseImpl.newInstance(framework.getAtmosphereConfig(), request, w));
processor.invokeWebSocketProtocol(w, "yoWebSocket");
framework.getBroadcasterFactory().lookup("/*").broadcast("yoBroadcast").get();
assertEquals(b.toString(), "yoCometyoWebSocketyoBroadcastyoBroadcast");
}
use of org.atmosphere.websocket.WebSocket in project atmosphere by Atmosphere.
the class WebSocketProcessorTest method onCloseAtmosphereRequestAttribute.
@Test
public void onCloseAtmosphereRequestAttribute() throws IOException, ServletException, ExecutionException, InterruptedException {
ByteArrayOutputStream b = new ByteArrayOutputStream();
final WebSocket w = new ArrayBaseWebSocket(b);
final WebSocketProcessor processor = WebSocketProcessorFactory.getDefault().getWebSocketProcessor(framework);
final AtomicReference<String> uuid = new AtomicReference<String>();
framework.addAtmosphereHandler("/*", new AtmosphereHandler() {
@Override
public void onRequest(AtmosphereResource resource) throws IOException {
resource.addEventListener(new WebSocketEventListenerAdapter() {
@Override
public void onClose(WebSocketEvent event) {
uuid.set((String) event.webSocket().resource().getRequest().getAttribute(SUSPENDED_ATMOSPHERE_RESOURCE_UUID));
}
});
}
@Override
public void onStateChange(AtmosphereResourceEvent event) throws IOException {
}
@Override
public void destroy() {
}
});
AtmosphereRequest request = new AtmosphereRequestImpl.Builder().destroyable(false).body("yoComet").pathInfo("/a").build();
processor.open(w, request, AtmosphereResponseImpl.newInstance(framework.getAtmosphereConfig(), request, w));
processor.invokeWebSocketProtocol(w, "yoWebSocket");
processor.notifyListener(w, new WebSocketEventListener.WebSocketEvent("Close", WebSocketEventListener.WebSocketEvent.TYPE.CLOSE, w));
assertNotNull(uuid.get());
assertEquals(uuid.get(), request.getAttribute(SUSPENDED_ATMOSPHERE_RESOURCE_UUID));
}
use of org.atmosphere.websocket.WebSocket in project atmosphere by Atmosphere.
the class WebSocketProcessorTest method basicProgrammaticAPIWorkflow.
@Test
public void basicProgrammaticAPIWorkflow() throws IOException, ServletException, ExecutionException, InterruptedException {
ByteArrayOutputStream b = new ByteArrayOutputStream();
final WebSocket w = new ArrayBaseWebSocket(b);
final WebSocketProcessor processor = WebSocketProcessorFactory.getDefault().getWebSocketProcessor(framework);
framework.addWebSocketHandler("/*", new WebSocketProcessor.WebSocketHandlerProxy(new WebSocketHandlerAdapter() {
@Override
public void onTextMessage(WebSocket webSocket, String data) throws IOException {
webSocket.write(data);
}
@Override
public void onOpen(WebSocket webSocket) throws IOException {
webSocket.write(webSocket.resource().getRequest().getReader().readLine());
}
}));
AtmosphereRequest request = new AtmosphereRequestImpl.Builder().destroyable(false).body("yoComet").pathInfo("/a").build();
processor.open(w, request, AtmosphereResponseImpl.newInstance(framework.getAtmosphereConfig(), request, w));
processor.invokeWebSocketProtocol(w, "yoWebSocket");
framework.getBroadcasterFactory().lookup("/*").broadcast("yoBroadcast").get();
assertEquals(b.toString(), "yoCometyoWebSocketyoBroadcast");
}
use of org.atmosphere.websocket.WebSocket in project atmosphere by Atmosphere.
the class WebSocketProcessorTest method encodeURLProxyTest.
@Test
public void encodeURLProxyTest() throws IOException, ServletException, ExecutionException, InterruptedException {
ByteArrayOutputStream b = new ByteArrayOutputStream();
final WebSocket w = new ArrayBaseWebSocket(b);
final WebSocketProcessor processor = WebSocketProcessorFactory.getDefault().getWebSocketProcessor(framework);
final AtomicReference<String> url = new AtomicReference<String>();
framework.addAtmosphereHandler("/*", new AtmosphereHandler() {
@Override
public void onRequest(AtmosphereResource resource) throws IOException {
url.set(resource.getResponse().encodeRedirectURL("http://127.0.0.1:8080"));
}
@Override
public void onStateChange(AtmosphereResourceEvent event) throws IOException {
}
@Override
public void destroy() {
}
});
AtmosphereRequest request = new AtmosphereRequestImpl.Builder().destroyable(false).body("yoComet").pathInfo("/a").build();
processor.open(w, request, AtmosphereResponseImpl.newInstance(framework.getAtmosphereConfig(), request, w));
processor.invokeWebSocketProtocol(w, "yoWebSocket");
assertEquals(url.get(), "http://127.0.0.1:8080");
}
Aggregations