@@ -0,0 +1,1953 @@
+package io.scalecube.gateway.websocket;%0D%0A%0D%0Aimport java.net.InetSocketAddress;%0D%0A%0D%0Aimport io.scalecube.services.ServiceCall;%0D%0Aimport io.scalecube.services.api.ServiceMessage;%0D%0Aimport io.scalecube.services.codec.ServiceMessageDataCodec;%0D%0Aimport reactor.core.publisher.Flux;%0D%0Aimport reactor.core.publisher.Mono;%0D%0A%0D%0Apublic class WebsocketGateway %7B%0D%0A%0D%0A  private WebSocketServer webSocketServer;%0D%0A  private Flux%3CServiceMessage%3E inbound;%0D%0A%0D%0A  public WebsocketGateway(Builder builder) %7B%0D%0A    this.webSocketServer = builder.webSocketServer;%0D%0A    this.inbound = builder.inbound;%0D%0A  %7D%0D%0A%0D%0A  public Flux%3CServiceMessage%3E receive() %7B%0D%0A    return inbound;%0D%0A  %7D%0D%0A%0D%0A  public InetSocketAddress start(InetSocketAddress inetSocketAddress) %7B%0D%0A    return webSocketServer.start(inetSocketAddress);%0D%0A  %7D%0D%0A%0D%0A%0D%0A  public static class Builder %7B%0D%0A%0D%0A    private ServiceCall call;%0D%0A    private WebSocketAcceptor acceptor;%0D%0A    private ServiceMessageDataCodec dataCodec = new ServiceMessageDataCodec();%0D%0A    private Flux%3CServiceMessage%3E inbound;%0D%0A    private WebSocketServer webSocketServer;%0D%0A%0D%0A    public Builder(ServiceCall call) %7B%0D%0A      this.call = call;%0D%0A    %7D%0D%0A%0D%0A    public Builder dataCodec(ServiceMessageDataCodec dataCodec) %7B%0D%0A      this.dataCodec = dataCodec;%0D%0A      return this;%0D%0A    %7D%0D%0A%0D%0A    public WebsocketGateway build() %7B%0D%0A      acceptor = new WebSocketAcceptor() %7B%0D%0A        @Override%0D%0A        public Mono%3CVoid%3E onConnect(WebSocketSession session) %7B%0D%0A          return session.send(%0D%0A              call.requestBidirectional(inbound)%0D%0A                  .map(dataCodec::encode))%0D%0A              .then();%0D%0A        %7D%0D%0A%0D%0A        @Override%0D%0A        public Mono%3CVoid%3E onDisconnect(WebSocketSession session) %7B%0D%0A          return Mono.never();%0D%0A        %7D%0D%0A      %7D;%0D%0A      this.webSocketServer = new WebSocketServer(acceptor);%0D%0A      return new WebsocketGateway(this);%0D%0A    %7D%0D%0A%0D%0A  %7D%0D%0A%0D%0A  public static Builder builder(ServiceCall call) %7B%0D%0A    return new Builder(call);%0D%0A  %7D%0D%0A%0D%0A%0D%0A%0D%0A%7D%0D%0A

add websocket gateway very basic model