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 WebSocketHandlerTest method basicWorkflow.
@Test
public void basicWorkflow() throws IOException, ServletException, ExecutionException, InterruptedException {
ByteArrayOutputStream b = new ByteArrayOutputStream();
final WebSocket w = new ArrayBaseWebSocket(b);
final WebSocketProcessor processor = WebSocketProcessorFactory.getDefault().getWebSocketProcessor(framework);
registerWebSocketHandler("/*", new WebSocketProcessor.WebSocketHandlerProxy(new EchoHandler()));
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(b.toString(), "yoWebSocket");
}
use of org.atmosphere.websocket.WebSocket in project atmosphere by Atmosphere.
the class WebSocketHandlerTest method testInjection.
@Test
public void testInjection() throws IOException, ServletException, ExecutionException, InterruptedException {
EchoHandler e = new EchoHandler();
ByteArrayOutputStream b = new ByteArrayOutputStream();
final WebSocket w = new ArrayBaseWebSocket(b);
final WebSocketProcessor processor = WebSocketProcessorFactory.getDefault().getWebSocketProcessor(framework);
registerWebSocketHandler("/*", new WebSocketProcessor.WebSocketHandlerProxy(e));
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");
assertNotNull(e.request);
}
use of org.atmosphere.websocket.WebSocket in project atmosphere by Atmosphere.
the class WebSocketHandlerTest method multipleWebSocketAndHandler.
@Test
public void multipleWebSocketAndHandler() throws IOException, ServletException, ExecutionException, InterruptedException {
ByteArrayOutputStream b = new ByteArrayOutputStream();
final WebSocket w = new ArrayBaseWebSocket(b);
final WebSocketProcessor processor = WebSocketProcessorFactory.getDefault().getWebSocketProcessor(framework);
registerWebSocketHandler("/a", new WebSocketProcessor.WebSocketHandlerProxy(new EchoHandler()));
registerWebSocketHandler("/b", new WebSocketProcessor.WebSocketHandlerProxy(new EchoHandler() {
@Override
public void onTextMessage(WebSocket webSocket, String data) throws IOException {
webSocket.write("2" + data);
}
}));
AtmosphereRequest request = new AtmosphereRequestImpl.Builder().destroyable(false).body("a").pathInfo("/a").build();
processor.open(w, request, AtmosphereResponseImpl.newInstance(framework.getAtmosphereConfig(), request, w));
processor.invokeWebSocketProtocol(w, "a");
assertEquals(b.toString(), "a");
ByteArrayOutputStream b2 = new ByteArrayOutputStream();
final WebSocket w2 = new ArrayBaseWebSocket(b2);
request = new AtmosphereRequestImpl.Builder().destroyable(false).body("b").pathInfo("/b").build();
processor.open(w2, request, AtmosphereResponseImpl.newInstance(framework.getAtmosphereConfig(), request, w));
processor.invokeWebSocketProtocol(w2, "b");
// The WebSocketHandler is shared.
assertEquals(b2.toString(), "2b");
}
use of org.atmosphere.websocket.WebSocket in project atmosphere by Atmosphere.
the class WebSocketProcessorTest method inClosePhaseTest.
@Test
public void inClosePhaseTest() throws IOException, ServletException, ExecutionException, InterruptedException {
ByteArrayOutputStream b = new ByteArrayOutputStream();
final WebSocket w = new ArrayBaseWebSocket(b);
final WebSocketProcessor processor = WebSocketProcessorFactory.getDefault().getWebSocketProcessor(framework);
final AtomicBoolean closed = new AtomicBoolean();
framework.addAtmosphereHandler("/*", new AtmosphereHandler() {
@Override
public void onRequest(final AtmosphereResource resource) throws IOException {
resource.addEventListener(new WebSocketEventListenerAdapter() {
@Override
public void onClose(WebSocketEvent event) {
closed.set(true);
}
});
AtmosphereResourceEventImpl.class.cast(resource.getAtmosphereResourceEvent()).isClosedByClient(true);
AsynchronousProcessor.class.cast(framework.getAsyncSupport()).completeLifecycle(resource, false);
processor.close(w, 1005);
}
@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));
assertFalse(closed.get());
}
Aggregations