package org.deephacks.westty.internal.sockjs; import org.deephacks.westty.config.ServerSpecificConfigProxy; import org.deephacks.westty.config.SockJsConfig; import org.deephacks.westty.spi.ProviderShutdownEvent; import org.deephacks.westty.spi.ProviderStartupEvent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.vertx.java.core.eventbus.EventBus; import org.vertx.java.core.http.HttpServer; import org.vertx.java.core.json.JsonArray; import org.vertx.java.core.json.JsonObject; import org.vertx.java.core.sockjs.SockJSServer; import javax.enterprise.event.Observes; import javax.inject.Inject; import javax.inject.Singleton; @Singleton public class SockJsBootstrap { private Logger log = LoggerFactory.getLogger(SockJsBootstrap.class); private HttpServer server; private WesttyVertx westtyVertx; private EventBus bus; private SockJsEndpoints endpoints; private SockJsConfig config; @Inject public SockJsBootstrap(ServerSpecificConfigProxy<SockJsConfig> config, WesttyVertx westtyVertx, EventBus bus, SockJsEndpoints endpoints) { this.config = config.get(); this.bus = bus; this.westtyVertx = westtyVertx; this.endpoints = endpoints; } public void startup(@Observes ProviderStartupEvent event) { server = westtyVertx.createHttpServer(); JsonArray permitted = new JsonArray(); // Let everything through permitted.add(new JsonObject()); SockJSServer sockJSServer = westtyVertx.createSockJSServer(server); sockJSServer .bridge(new JsonObject().putString("prefix", "/eventbus"), permitted, permitted); server.listen(config.getHttpPort()); log.info("SockJs started on port " + config.getHttpPort()); endpoints.start(bus); log.info("EventBus started on port " + config.getEventBusPort()); } public void shutdown(@Observes ProviderShutdownEvent event) { log.info("Shutdown SockJs"); if (server != null) { server.close(); } } }