@@ -0,0 +1,1756 @@
+package io.scalecube.gateway.websocket;%0A%0Aimport io.netty.handler.codec.http.websocketx.WebSocketFrame;%0A%0Aimport org.reactivestreams.Publisher;%0Aimport org.slf4j.Logger;%0Aimport org.slf4j.LoggerFactory;%0A%0Aimport java.util.function.BiFunction;%0A%0Aimport reactor.core.publisher.Flux;%0Aimport reactor.core.publisher.Mono;%0Aimport reactor.ipc.netty.NettyPipeline;%0Aimport reactor.ipc.netty.http.server.HttpServer;%0Aimport reactor.ipc.netty.http.server.HttpServerRequest;%0Aimport reactor.ipc.netty.http.server.HttpServerResponse;%0Aimport reactor.ipc.netty.http.websocket.WebsocketInbound;%0Aimport reactor.ipc.netty.http.websocket.WebsocketOutbound;%0A%0Apublic class WSServerRunner %7B%0A%0A  public static final Logger LOGGER = LoggerFactory.getLogger(WSServerRunner.class);%0A%0A  public static void main(String%5B%5D args) %7B%0A    BiFunction%3CHttpServerRequest, HttpServerResponse, Publisher%3CVoid%3E%3E handler =%0A        (HttpServerRequest httpRequest, HttpServerResponse httpResponse) -%3E %7B%0A%0A          // noinspection UnnecessaryLocalVariable%0A          Mono%3CVoid%3E voidMono =%0A              httpResponse.sendWebsocket((WebsocketInbound inbound, WebsocketOutbound outbound) -%3E %7B%0A%0A                Flux%3CWebSocketFrame%3E receiveFlux = inbound%0A                    .aggregateFrames()%0A                    .receiveFrames()%0A                    .doOnNext(WebSocketFrame::retain);%0A%0A                return outbound%0A                    .options(NettyPipeline.SendOptions::flushOnEach)%0A                    .sendObject(receiveFlux);%0A%0A              %7D);%0A%0A          return voidMono;%0A        %7D;%0A%0A    HttpServer.create(builder -%3E builder%0A        .port(8080)%0A        .validateHeaders(true)%0A        .maxChunkSize(65536)%0A        .initialBufferSize(8192)%0A        .preferNative(false))%0A        .startAndAwait(handler);%0A  %7D%0A%7D%0A

Put dummy echo example