java.lang.Object
org.miaixz.bus.http.socket.RealWebSocket
- All Implemented Interfaces:
WebSocket,WebSocketReader.FrameCallback
WebSocket 客户端实现
实现 WebSocket 协议(RFC 6455),支持消息发送、接收、ping/pong 和优雅关闭。 管理消息队列和连接生命周期,使用回调通知监听器处理事件。
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from interface org.miaixz.bus.http.socket.WebSocket
WebSocket.Factory -
Constructor Summary
ConstructorsConstructorDescriptionRealWebSocket(Request request, WebSocketListener listener, Random random, long pingIntervalMillis) 构造函数,初始化 WebSocket 实例 -
Method Summary
Modifier and TypeMethodDescriptionvoidcancel()取消 WebSocket 连接boolean关闭 WebSocket 连接void建立 WebSocket 连接voidfailWebSocket(Exception e, Response response) 处理 WebSocket 失败voidinitReaderAndWriter(String name, RealWebSocket.Streams streams) 初始化帧读取器和写入器void循环读取帧voidonReadClose(int code, String reason) 接收 close 帧voidonReadMessage(String text) 接收文本消息voidonReadMessage(org.miaixz.bus.core.io.ByteString bytes) 接收二进制消息voidonReadPing(org.miaixz.bus.core.io.ByteString payload) 接收 ping 帧voidonReadPong(org.miaixz.bus.core.io.ByteString buffer) 接收 pong 帧long获取队列大小request()获取原始请求boolean发送文本消息booleansend(org.miaixz.bus.core.io.ByteString bytes) 发送二进制消息
-
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
获取原始请求 -
queueSize
public long queueSize()获取队列大小 -
cancel
public void cancel()取消 WebSocket 连接 -
connect
建立 WebSocket 连接- Parameters:
client- HTTP 客户端
-
initReaderAndWriter
初始化帧读取器和写入器- Parameters:
name- 线程名称streams- 数据流
-
loopReader
循环读取帧- Throws:
IOException- 如果读取失败
-
onReadMessage
接收文本消息- Specified by:
onReadMessagein interfaceWebSocketReader.FrameCallback- Parameters:
text- 文本内容
-
onReadMessage
public void onReadMessage(org.miaixz.bus.core.io.ByteString bytes) 接收二进制消息- Specified by:
onReadMessagein interfaceWebSocketReader.FrameCallback- Parameters:
bytes- 二进制内容
-
onReadPing
public void onReadPing(org.miaixz.bus.core.io.ByteString payload) 接收 ping 帧- Specified by:
onReadPingin interfaceWebSocketReader.FrameCallback- Parameters:
payload- ping 数据
-
onReadPong
public void onReadPong(org.miaixz.bus.core.io.ByteString buffer) 接收 pong 帧- Specified by:
onReadPongin interfaceWebSocketReader.FrameCallback- Parameters:
buffer- pong 数据
-
onReadClose
接收 close 帧- Specified by:
onReadClosein interfaceWebSocketReader.FrameCallback- Parameters:
code- 关闭代码reason- 关闭原因- Throws:
IllegalArgumentException- 如果 code 无效
-
send
发送文本消息- Specified by:
sendin interfaceWebSocket- Parameters:
text- 文本内容- Returns:
- true 如果发送成功
- Throws:
NullPointerException- 如果 text 为 null
-
send
public boolean send(org.miaixz.bus.core.io.ByteString bytes) 发送二进制消息- Specified by:
sendin interfaceWebSocket- Parameters:
bytes- 二进制内容- Returns:
- true 如果发送成功
- Throws:
NullPointerException- 如果 bytes 为 null
-
close
关闭 WebSocket 连接 -
failWebSocket
处理 WebSocket 失败- Parameters:
e- 异常response- 响应(可能为 null)
-