123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- import io.undertow.Undertow;
- import io.undertow.server.HttpHandler;
- import io.undertow.server.HttpServerExchange;
- import io.undertow.util.Headers;
- import tcp.CuisineTCPServer;
-
- import websockets.CuisineWebSocketServer;
-
- import java.util.Scanner;
-
- import static io.undertow.Handlers.*;
-
- public class CuisineHTTPServer extends Thread
- {
- static int webPagePort = 8080;
-
- static int webSocketPort = 42069;
- static String webSocketHost = "192.168.0.24";
- static String webSocketProcolPrefix = "wss";
- static boolean writePortInClientSideURI = false;
-
- static int tcpSocketPort = 6868;
- static String HOST = "0.0.0.0" ;
-
- private static CuisineTCPServer fCuisineTCPServer;
-
- public void startServer(String iHostName, int iWebPagePort, int iWebSocketPort, boolean iWebSocketUriClPortDisplay, String iWebSocketProtocolPrefix, int iTcpSocketPort)
- {
- webSocketHost = iHostName;
- webPagePort = iWebPagePort;
- webSocketPort = iWebSocketPort;
- tcpSocketPort = iTcpSocketPort;
- webSocketProcolPrefix = iWebSocketProtocolPrefix;
- writePortInClientSideURI = iWebSocketUriClPortDisplay;
- initResources();
-
- //Create CuisineTCPServer
- fCuisineTCPServer = new CuisineTCPServer(tcpSocketPort);
-
- //Start HTTP Server : serve webpage with JS that calls the websocket
- Undertow WebPageServer = Undertow.builder()
- .addHttpListener(webPagePort, HOST)
- .setHandler(
- new CuisineResponseHandler(iWebSocketProtocolPrefix+"://"+webSocketHost+":"+( writePortInClientSideURI ? webSocketPort : "" ))
- ).build();
- WebPageServer.start();
-
- System.out.println("WebPageServer started");
-
- CuisineWebSocketServer vWebSocketServer = new CuisineWebSocketServer(webSocketHost,webSocketPort);
- vWebSocketServer.initTCPServer(fCuisineTCPServer);
- //Start websocket
- vWebSocketServer.start();
- System.out.println("WebSocketServer started");
-
-
-
- }
-
- static String sHtml_ASCII_title;
- static String sHtml_CSS;
- static String sJS_ClientSide;
- static String sHtml_Chatbox;
- static String sJS_Chatbox;
- static void initResources()
- {
- try {
- sHtml_ASCII_title = new Scanner(CuisineHTTPServer.class.getResourceAsStream("html_ascii_title"), "UTF-8").useDelimiter("\\A").next();
- sHtml_CSS = new Scanner(CuisineHTTPServer.class.getResourceAsStream("style.css"), "UTF-8").useDelimiter("\\A").next();
- sJS_ClientSide = new Scanner(CuisineHTTPServer.class.getResourceAsStream("clientsidecoms.js"), "UTF-8").useDelimiter("\\A").next();
- sHtml_Chatbox = new Scanner(CuisineHTTPServer.class.getResourceAsStream("components/chat.html"), "UTF-8").useDelimiter("\\A").next();
- sJS_Chatbox = new Scanner(CuisineHTTPServer.class.getResourceAsStream("components/chatscript.js"), "UTF-8").useDelimiter("\\A").next();
-
- }
- catch(Exception vex)
- {
- vex.printStackTrace();
- sHtml_ASCII_title = "Galère les resources";
- }
- }
-
- private class CuisineResponseHandler implements HttpHandler
- {
- private String fWebSocketConnectionUri;
-
- public CuisineResponseHandler(String iWebSocketConnectionUri)
- {
- super();
-
- fWebSocketConnectionUri = iWebSocketConnectionUri;
- }
- @Override
- public void handleRequest(HttpServerExchange exchange) throws Exception {
- //Serve webpage
- exchange.getResponseHeaders()
- .put(Headers.CONTENT_TYPE, "text/html")
- .put(Headers.CONTENT_ENCODING,"utf-8");
- exchange.getResponseSender().send(getHTMLFrontPage(fWebSocketConnectionUri));
- }
- }
-
-
-
- static String getHTMLFrontPage(String iWsUri)
- {
- StringBuilder vBuilder = new StringBuilder();
- vBuilder
- .append("<head>")
- .append(" <meta charset=\"UTF-8\">")
- .append(" <style>")
- .append(sHtml_CSS)
- .append(" </style>")
- .append("</head>")
- .append("<body>")
- .append(" <div class=\"centered\">")
- .append(sHtml_ASCII_title)
- .append(" </div>")
- .append(" <h1 id=\"tempValue\">None</h1>")
- .append(sHtml_Chatbox.replace("%WSURI%",iWsUri))
- .append(" <script>")
- .append(sJS_ClientSide.replace("%WSURI%",iWsUri))
- .append(sJS_Chatbox.replace("%WSURI%",iWsUri))
- .append(" </script>")
- .append("</body>")
- .append("")
-
- ;
- return vBuilder.toString();
- }
- }
|