Class VoiceWebsocketHandler

java.lang.Object
discord4j.voice.VoiceWebsocketHandler

public class VoiceWebsocketHandler extends Object
Represents a WebSocket handler specialized for Discord voice gateway operations.

Capable of handling closing events that normally occur in its lifecycle.

This handler uses a FluxSink of ByteBuf to push inbound payloads and a Flux of ByteBuf to pull outbound payloads.

The handler also provides methods to control the lifecycle, which perform operations on the current session. It is required to use them to properly release important resources and complete the session.

  • Constructor Details

    • VoiceWebsocketHandler

      public VoiceWebsocketHandler(Sinks.Many<ByteBuf> inbound, Flux<ByteBuf> outbound, ContextView context)
      Create a new handler with the given data pipelines.
      Parameters:
      inbound - the Sinks.Many of ByteBuf to process inbound payloads
      outbound - the Flux of ByteBuf to process outbound payloads
      context - the Reactor ContextView that owns this handler, to enrich logging
  • Method Details

    • handle

      Handle an upgraded websocket connection, given by both WebsocketInbound and WebsocketOutbound to manage a session until the remote closes or one of the local methods close() or error(Throwable) methods are called. When that happens, a close procedure will take place and ultimately emit a pair of DisconnectBehavior and remote CloseStatus, if present or "-1" if none is present.
      Parameters:
      in - the websocket inbound
      out - the websocket outbound
      Returns:
      a Mono that upon subscription, manages a websocket session until it closes where a Tuple2 is emitted representing both the DisconnectBehavior that initiated the close procedure, and the inbound CloseStatus.
    • close

      public void close()
      Initiates a close sequence that will terminate this session and instruct consumers downstream that a reconnect should take place afterwards.
    • close

      public void close(DisconnectBehavior behavior)
      Initiates a close sequence that will terminate this session and then execute a given DisconnectBehavior.
      Parameters:
      behavior - the DisconnectBehavior to follow after the close sequence starts
    • error

      public void error(Throwable error)
      Initiates a close sequence with the given error. The session will be terminated abruptly and then instruct consumers downstream that a reconnect should take place afterwards.
      Parameters:
      error - the cause for this session termination