Class WebSocketServerHandshaker

  • Direct Known Subclasses:
    WebSocketServerHandshaker13

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

      • SUB_PROTOCOL_WILDCARD

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

      • 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 Detail

      • 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 Future<Void> handshake​(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 Future which is notified once the opening handshake completes
      • handshake

        public final Future<Void> handshake​(Channel channel,
                                            FullHttpRequest req,
                                            HttpHeaders responseHeaders)
        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
        Returns:
        future the Future which is notified when the opening handshake is done
      • handshake

        public Future<Void> handshake​(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 Future which is notified once the opening handshake completes
      • handshake

        public final Future<Void> handshake​(Channel channel,
                                            HttpRequest req,
                                            HttpHeaders responseHeaders)
        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
        Returns:
        future the Future which is notified when the opening 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.