use of org.atmosphere.websocket.WebSocketProcessor 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.WebSocketProcessor in project atmosphere by Atmosphere.
the class WebSocketProcessorFactory method getWebSocketProcessor.
/**
* Return the {@link WebSocketProcessor}.
*
* @param framework {@link AtmosphereFramework}
* @return an instance of {@link WebSocketProcessor}
*/
public WebSocketProcessor getWebSocketProcessor(AtmosphereFramework framework) {
WebSocketProcessor processor = processors.get(framework);
if (processor == null) {
synchronized (framework) {
processor = createProcessor(framework);
processors.put(framework, processor);
}
}
return processor;
}
use of org.atmosphere.websocket.WebSocketProcessor 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.WebSocketProcessor 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.WebSocketProcessor 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");
}
Aggregations