123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- import io.undertow.Undertow;
- import io.undertow.server.HttpHandler;
- import io.undertow.server.HttpServerExchange;
- import io.undertow.util.Headers;
- import io.undertow.websockets.WebSocketConnectionCallback;
- import io.undertow.websockets.core.AbstractReceiveListener;
- import io.undertow.websockets.core.BufferedTextMessage;
- import io.undertow.websockets.core.WebSocketChannel;
- import io.undertow.websockets.core.WebSockets;
- import io.undertow.websockets.spi.WebSocketHttpExchange;
-
- import static io.undertow.Handlers.*;
-
- public class CuisineHTTPServer extends Thread
- {
- final int webPagePort = 8080;
- final int webSocketPort = 42069;
- final String HOST = "localhost" ;
-
-
- public void startServer()
- {
- //Create CuisineTCPServers
- CuisineTCPServer vTCPServer = new CuisineTCPServer();
- CuisineWebSocketMessageHandler vWebSocketMessageHandler = new CuisineWebSocketMessageHandler( vTCPServer );
- CuisineWebSocketConnectionHandler vWebSocketConnectionHandler = new CuisineWebSocketConnectionHandler( vWebSocketMessageHandler );
-
- //Start HTTP Server : serve webpage with JS that calls the websocket
- Undertow WebPageServer = Undertow.builder()
- .addHttpListener(webPagePort, HOST)
- .setHandler(
- new CuisineResponseHandler()
- ).build();
- WebPageServer.start();
-
- System.out.println("WebPageServer started");
- //Start websocket
- Undertow WebSocketServer = Undertow.builder()
- .addHttpListener(webSocketPort, HOST)
- .setHandler(
- path()
- .addPrefixPath("/data",websocket(vWebSocketConnectionHandler))
- )
- .build();
- WebSocketServer.start();
- System.out.println("WebSocketServer started");
-
- }
-
- private class CuisineResponseHandler implements HttpHandler
- {
-
- @Override
- public void handleRequest(HttpServerExchange exchange) throws Exception {
- //Serve webpage
- exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain");
- exchange.getResponseSender().send("Salut, gropd!");
- }
- }
-
- private class CuisineWebSocketConnectionHandler implements WebSocketConnectionCallback
- {
- private CuisineWebSocketMessageHandler fWebSocketMessageHandler;
-
- protected CuisineWebSocketConnectionHandler(CuisineWebSocketMessageHandler iWebSocketMessageHandler)
- {
- fWebSocketMessageHandler = iWebSocketMessageHandler;
- }
-
- @Override
- public void onConnect(WebSocketHttpExchange exchange, WebSocketChannel channel) {
- channel.getReceiveSetter().set(fWebSocketMessageHandler);
- channel.resumeReceives();
- }
- }
-
- private class CuisineWebSocketMessageHandler extends AbstractReceiveListener {
-
- private CuisineTCPServer fTCPServer;
-
- protected CuisineWebSocketMessageHandler( CuisineTCPServer iTCPServer)
- {
- fTCPServer = iTCPServer;
- }
-
- protected void onFullTextMessage(WebSocketChannel iChannel, BufferedTextMessage iTextMessage)
- {
- //Handle message on webSocket
- WebSockets.sendText(String.valueOf(fTCPServer.getCurrentTemperature()), iChannel, null);
- }
-
- }
- }
|