Embedding the webserver 2

PHOTO EMBED

Fri Feb 26 2021 19:22:28 GMT+0000 (Coordinated Universal Time)

Saved by @surrealemily

// import statements...

@Mod(HifiMC.MOD_ID)
public class HifiMC {
    // ...

    private void doClientStuff(final FMLClientSetupEvent event) {
        String webhostname = "localhost";
        int webport = 7777;
        int maxconnections = 5;

        LinkedBlockingQueue<runnable> queue = new LinkedBlockingQueue<runnable>(maxconnections);
        ExecutorThreadPool pool = new ExecutorThreadPool(maxconnections, 2, queue);
        Server webServer = new Server(pool);

        NetworkTrafficServerConnector connector = new NetworkTrafficServerConnector(webServer);
        connector.setAcceptQueueSize(50);
        if(webhostname.equals("0.0.0.0") == false)
            connector.setHost(webhostname);
        connector.setPort(webport);
        webServer.setConnectors(new Connector[]{connector});
        webServer.setStopAtShutdown(true);


        ContextHandlerCollection handlers = new ContextHandlerCollection();

        // TODO: Add some handlers for a websocket and a static webpage

        webServer.setHandler(handlers);


        try {
            webServer.start();
            LOGGER.info("Webserver running at " + webhostname + ":" + webport); // TODO: Remove this when we have an static webpage to test with
        } catch (Exception e) {
            LOGGER.error("------------------------ caught webServer exception", e);
        }
    }

    // ...
}
content_copyCOPY