Base WebSocket implementation.

It implements both and so it can be used with Pump to pump data with flow control.

no type hierarchy

Inherited Attributes
Attributes inherited from: Object
hash, string
Methods
binaryHandlerIDshared String binaryHandlerID()

When a Websocket is created it automatically registers an event handler with the event bus - the ID of that handler is given by this method.

Given this ID, a different event loop can send a binary frame to that event handler using the event bus and that buffer will be received by this instance in its own event loop and written to the underlying connection. This allows you to write data to other WebSockets which are owned by different event loops.

binaryMessageHandlershared WebSocketBase binaryMessageHandler(Anything(Buffer)? handler)

Set a binary message handler on the connection. This handler serves a similar purpose to handler except that if a message comes into the socket in multiple frames, the data from the frames will be aggregated into a single buffer before calling the handler (using isFinal to find the boundaries).

Parameters:
  • handler

    the handler

closeshared void close()

Close the WebSocket.

closeshared void close(Integer statusCode)
closeshared void close(Integer statusCode, String? reason)
closeHandlershared WebSocketBase closeHandler(Anything()? handler)

Set a close handler. This will be called when the WebSocket is closed.

Parameters:
  • handler

    the handler

drainHandlershared WebSocketBase drainHandler(Anything()? handler)
endshared void end()

Calls close

endshared void end(Buffer t)

Same as end but writes some data to the stream before ending.

endHandlershared WebSocketBase endHandler(Anything()? endHandler)
exceptionHandlershared WebSocketBase exceptionHandler(Anything(Throwable)? handler)
frameHandlershared WebSocketBase frameHandler(Anything(WebSocketFrame)? handler)

Set a frame handler on the connection. This handler will be called when frames are read on the connection.

Parameters:
  • handler

    the handler

handlershared WebSocketBase handler(Anything(Buffer)? handler)
isSslshared Boolean isSsl()
localAddressshared SocketAddress localAddress()
pauseshared WebSocketBase pause()
pongHandlershared WebSocketBase pongHandler(Anything(Buffer)? handler)

Set a pong message handler on the connection. This handler will be invoked every time a pong message is received on the server, and can be used by both clients and servers since the RFC 6455 Sections 5.5.2 and 5.5.3 do not specify whether the client or server sends a ping.

Pong frames may be at most 125 bytes (octets).

There is no ping handler since pings should immediately be responded to with a pong with identical content

Pong frames may be received unsolicited.

Parameters:
  • handler

    the handler

remoteAddressshared SocketAddress remoteAddress()
resumeshared WebSocketBase resume()
setWriteQueueMaxSizeshared WebSocketBase setWriteQueueMaxSize(Integer maxSize)
subProtocolshared String subProtocol()

Returns the websocket sub protocol selected by the websocket handshake.

On the server, the value will be null when the handler receives the websocket callback as the handshake will not be completed yet.

textHandlerIDshared String textHandlerID()

When a Websocket is created it automatically registers an event handler with the eventbus, the ID of that handler is given by textHandlerID.

Given this ID, a different event loop can send a text frame to that event handler using the event bus and that buffer will be received by this instance in its own event loop and written to the underlying connection. This allows you to write data to other WebSockets which are owned by different event loops.

textMessageHandlershared WebSocketBase textMessageHandler(Anything(String)? handler)

Set a text message handler on the connection. This handler will be called similar to the , but the buffer will be converted to a String first

Parameters:
  • handler

    the handler

writeshared WebSocketBase write(Buffer data)
writeBinaryMessageshared WebSocketBase writeBinaryMessage(Buffer data)

Writes a (potentially large) piece of binary data to the connection. This data might be written as multiple frames if it exceeds the maximum WebSocket frame size.

Parameters:
  • data

    the data to write

writeFinalBinaryFrameshared WebSocketBase writeFinalBinaryFrame(Buffer data)

Write a final WebSocket binary frame to the connection

Parameters:
  • data

    The data to write

writeFinalTextFrameshared WebSocketBase writeFinalTextFrame(String text)

Write a final WebSocket text frame to the connection

Parameters:
  • text

    The text to write

writeFrameshared WebSocketBase writeFrame(WebSocketFrame frame)

Write a WebSocket frame to the connection

Parameters:
  • frame

    the frame to write

writePingshared WebSocketBase writePing(Buffer data)

Writes a ping to the connection. This will be written in a single frame. Ping frames may be at most 125 bytes (octets).

This method should not be used to write application data and should only be used for implementing a keep alive or to ensure the client is still responsive, see RFC 6455 Section 5.5.2.

There is no pingHandler because RFC 6455 section 5.5.2 clearly states that the only response to a ping is a pong with identical contents.

Parameters:
  • data

    the data to write, may be at most 125 bytes

writePongshared WebSocketBase writePong(Buffer data)

Writes a pong to the connection. This will be written in a single frame. Pong frames may be at most 125 bytes (octets).

This method should not be used to write application data and should only be used for implementing a keep alive or to ensure the client is still responsive, see RFC 6455 Section 5.5.2.

There is no need to manually write a Pong, as the server and client both handle responding to a ping with a pong automatically and this is exposed to users.RFC 6455 Section 5.5.3 states that pongs may be sent unsolicited in order to implement a one way heartbeat.

Parameters:
  • data

    the data to write, may be at most 125 bytes

writeQueueFullshared Boolean writeQueueFull()

This will return true if there are more bytes in the write queue than the value set using setWriteQueueMaxSize

writeTextMessageshared WebSocketBase writeTextMessage(String text)

Writes a (potentially large) piece of text data to the connection. This data might be written as multiple frames if it exceeds the maximum WebSocket frame size.

Parameters:
  • text

    the data to write

Inherited Methods
Methods inherited from: Object
equals
Methods inherited from: ReadStream<T>
Methods inherited from: StreamBase
Methods inherited from: WriteStream<T>