Class WebSocketServerHandshaker

java.lang.Object
io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker
Direct Known Subclasses:
WebSocketServerHandshaker00, WebSocketServerHandshaker07, WebSocketServerHandshaker08, WebSocketServerHandshaker13

public abstract class WebSocketServerHandshaker extends Object
Base class for server side web socket opening and closing handshakes
  • Field Details

    • logger

      protected static final io.netty.util.internal.logging.InternalLogger logger
    • SUB_PROTOCOL_WILDCARD

      public static final String SUB_PROTOCOL_WILDCARD
      Use this as wildcard to support all requested sub-protocols
      See Also:
  • Constructor Details

    • WebSocketServerHandshaker

      protected WebSocketServerHandshaker(WebSocketVersion version, String uri, String subprotocols, int maxFramePayloadLength)
      Constructor specifying the destination web socket location
      Parameters:
      version - the protocol version
      uri - URL for web socket communications. e.g "ws://myhost.com/mypath". Subsequent web socket frames will be sent to this URL.
      subprotocols - CSV of supported protocols. Null if sub protocols not supported.
      maxFramePayloadLength - Maximum length of a frame's payload
    • WebSocketServerHandshaker

      protected WebSocketServerHandshaker(WebSocketVersion version, String uri, String subprotocols, WebSocketDecoderConfig decoderConfig)
      Constructor specifying the destination web socket location
      Parameters:
      version - the protocol version
      uri - URL for web socket communications. e.g "ws://myhost.com/mypath". Subsequent web socket frames will be sent to this URL.
      subprotocols - CSV of supported protocols. Null if sub protocols not supported.
      decoderConfig - Frames decoder configuration.
  • Method Details

    • uri

      public String uri()
      Returns the URL of the web socket
    • subprotocols

      public Set<String> subprotocols()
      Returns the CSV of supported sub protocols
    • version

      public WebSocketVersion version()
      Returns the version of the specification being supported
    • maxFramePayloadLength

      public int maxFramePayloadLength()
      Gets the maximum length for any frame's payload.
      Returns:
      The maximum length for a frame's payload
    • decoderConfig

      public WebSocketDecoderConfig decoderConfig()
      Gets this decoder configuration.
      Returns:
      This decoder configuration.
    • handshake

      public io.netty.channel.ChannelFuture handshake(io.netty.channel.Channel channel, FullHttpRequest req)
      Performs the opening handshake. When call this method you MUST NOT retain the FullHttpRequest which is passed in.
      Parameters:
      channel - Channel
      req - HTTP Request
      Returns:
      future The ChannelFuture which is notified once the opening handshake completes
    • handshake

      public final io.netty.channel.ChannelFuture handshake(io.netty.channel.Channel channel, FullHttpRequest req, HttpHeaders responseHeaders, io.netty.channel.ChannelPromise promise)
      Performs the opening handshake When call this method you MUST NOT retain the FullHttpRequest which is passed in.
      Parameters:
      channel - Channel
      req - HTTP Request
      responseHeaders - Extra headers to add to the handshake response or null if no extra headers should be added
      promise - the ChannelPromise to be notified when the opening handshake is done
      Returns:
      future the ChannelFuture which is notified when the opening handshake is done
    • handshake

      public io.netty.channel.ChannelFuture handshake(io.netty.channel.Channel channel, HttpRequest req)
      Performs the opening handshake. When call this method you MUST NOT retain the FullHttpRequest which is passed in.
      Parameters:
      channel - Channel
      req - HTTP Request
      Returns:
      future The ChannelFuture which is notified once the opening handshake completes
    • handshake

      public final io.netty.channel.ChannelFuture handshake(io.netty.channel.Channel channel, HttpRequest req, HttpHeaders responseHeaders, io.netty.channel.ChannelPromise promise)
      Performs the opening handshake When call this method you MUST NOT retain the HttpRequest which is passed in.
      Parameters:
      channel - Channel
      req - HTTP Request
      responseHeaders - Extra headers to add to the handshake response or null if no extra headers should be added
      promise - the ChannelPromise to be notified when the opening handshake is done
      Returns:
      future the ChannelFuture which is notified when the opening handshake is done
    • newHandshakeResponse

      protected abstract FullHttpResponse newHandshakeResponse(FullHttpRequest req, HttpHeaders responseHeaders)
      Returns a new
      invalid @link
      {@link FullHttpResponse) which will be used for as response to the handshake request.
    • close

      public io.netty.channel.ChannelFuture close(io.netty.channel.Channel channel, CloseWebSocketFrame frame)
      Performs the closing handshake. When called from within a ChannelHandler you most likely want to use close(ChannelHandlerContext, CloseWebSocketFrame).
      Parameters:
      channel - the Channel to use.
      frame - Closing Frame that was received.
    • close

      public io.netty.channel.ChannelFuture close(io.netty.channel.Channel channel, CloseWebSocketFrame frame, io.netty.channel.ChannelPromise promise)
      Performs the closing handshake. When called from within a ChannelHandler you most likely want to use close(ChannelHandlerContext, CloseWebSocketFrame, ChannelPromise).
      Parameters:
      channel - the Channel to use.
      frame - Closing Frame that was received.
      promise - the ChannelPromise to be notified when the closing handshake is done
    • close

      public io.netty.channel.ChannelFuture close(io.netty.channel.ChannelHandlerContext ctx, CloseWebSocketFrame frame)
      Performs the closing handshake.
      Parameters:
      ctx - the ChannelHandlerContext to use.
      frame - Closing Frame that was received.
    • close

      public io.netty.channel.ChannelFuture close(io.netty.channel.ChannelHandlerContext ctx, CloseWebSocketFrame frame, io.netty.channel.ChannelPromise promise)
      Performs the closing handshake.
      Parameters:
      ctx - the ChannelHandlerContext to use.
      frame - Closing Frame that was received.
      promise - the ChannelPromise to be notified when the closing handshake is done.
    • selectSubprotocol

      protected String selectSubprotocol(String requestedSubprotocols)
      Selects the first matching supported sub protocol
      Parameters:
      requestedSubprotocols - CSV of protocols to be supported. e.g. "chat, superchat"
      Returns:
      First matching supported sub protocol. Null if not found.
    • selectedSubprotocol

      public String selectedSubprotocol()
      Returns the selected subprotocol. Null if no subprotocol has been selected.

      This is only available AFTER handshake() has been called.

    • newWebsocketDecoder

      protected abstract WebSocketFrameDecoder newWebsocketDecoder()
      Returns the decoder to use after handshake is complete.
    • newWebSocketEncoder

      protected abstract WebSocketFrameEncoder newWebSocketEncoder()
      Returns the encoder to use after the handshake is complete.