Module bus.http

Class RealWebSocket

java.lang.Object
org.miaixz.bus.http.socket.RealWebSocket
All Implemented Interfaces:
WebSocket, WebSocketReader.FrameCallback

public class RealWebSocket extends Object implements WebSocket, WebSocketReader.FrameCallback
WebSocket 客户端实现

实现 WebSocket 协议(RFC 6455),支持消息发送、接收、ping/pong 和优雅关闭。 管理消息队列和连接生命周期,使用回调通知监听器处理事件。

Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • RealWebSocket

      public RealWebSocket(Request request, WebSocketListener listener, Random random, long pingIntervalMillis)
      构造函数,初始化 WebSocket 实例
      Parameters:
      request - 原始请求(必须为 GET)
      listener - WebSocket 监听器
      random - 随机数生成器
      pingIntervalMillis - ping 间隔(毫秒)
      Throws:
      IllegalArgumentException - 如果请求方法不是 GET
  • Method Details

    • request

      public Request request()
      获取原始请求
      Specified by:
      request in interface WebSocket
      Returns:
      原始请求
    • queueSize

      public long queueSize()
      获取队列大小
      Specified by:
      queueSize in interface WebSocket
      Returns:
      队列中的字节数
    • cancel

      public void cancel()
      取消 WebSocket 连接
      Specified by:
      cancel in interface WebSocket
    • connect

      public void connect(Httpd client)
      建立 WebSocket 连接
      Parameters:
      client - HTTP 客户端
    • initReaderAndWriter

      public void initReaderAndWriter(String name, RealWebSocket.Streams streams)
      初始化帧读取器和写入器
      Parameters:
      name - 线程名称
      streams - 数据流
    • loopReader

      public void loopReader() throws IOException
      循环读取帧
      Throws:
      IOException - 如果读取失败
    • onReadMessage

      public void onReadMessage(String text)
      接收文本消息
      Specified by:
      onReadMessage in interface WebSocketReader.FrameCallback
      Parameters:
      text - 文本内容
    • onReadMessage

      public void onReadMessage(org.miaixz.bus.core.io.ByteString bytes)
      接收二进制消息
      Specified by:
      onReadMessage in interface WebSocketReader.FrameCallback
      Parameters:
      bytes - 二进制内容
    • onReadPing

      public void onReadPing(org.miaixz.bus.core.io.ByteString payload)
      接收 ping 帧
      Specified by:
      onReadPing in interface WebSocketReader.FrameCallback
      Parameters:
      payload - ping 数据
    • onReadPong

      public void onReadPong(org.miaixz.bus.core.io.ByteString buffer)
      接收 pong 帧
      Specified by:
      onReadPong in interface WebSocketReader.FrameCallback
      Parameters:
      buffer - pong 数据
    • onReadClose

      public void onReadClose(int code, String reason)
      接收 close 帧
      Specified by:
      onReadClose in interface WebSocketReader.FrameCallback
      Parameters:
      code - 关闭代码
      reason - 关闭原因
      Throws:
      IllegalArgumentException - 如果 code 无效
    • send

      public boolean send(String text)
      发送文本消息
      Specified by:
      send in interface WebSocket
      Parameters:
      text - 文本内容
      Returns:
      true 如果发送成功
      Throws:
      NullPointerException - 如果 text 为 null
    • send

      public boolean send(org.miaixz.bus.core.io.ByteString bytes)
      发送二进制消息
      Specified by:
      send in interface WebSocket
      Parameters:
      bytes - 二进制内容
      Returns:
      true 如果发送成功
      Throws:
      NullPointerException - 如果 bytes 为 null
    • close

      public boolean close(int code, String reason)
      关闭 WebSocket 连接
      Specified by:
      close in interface WebSocket
      Parameters:
      code - 关闭代码
      reason - 关闭原因
      Returns:
      true 如果关闭成功
    • failWebSocket

      public void failWebSocket(Exception e, Response response)
      处理 WebSocket 失败
      Parameters:
      e - 异常
      response - 响应(可能为 null)