如何在实际应用中使用 Jetty 的 onWebSocketBinary API
how to use Jetty's onWebSocketBinary API in a real world application
API WebSocketListener
的 obWebSocketBinary
方法及其子类的签名如下所示:
void onWebSocketBinary(byte[] payload, int offset, int len)
让我们称 payload
中的字节来自 offset
由于 len
- 'current_bytes'。我应该如何解释这个 API:
- 'current_bytes'是从客户端发送的整个二进制消息,
payload
数组的其余部分与此会话调用无关
- 'current_bytes' 是 部分 二进制消息,我应该收集数据直到
offset
+ len
等于 payload.length
- 'current_bytes' 是 部分 二进制消息,但我应该通过检查有效负载内容来管理 'full message delivered' 的概念
如果,据推测,由于len
的offset
不是payload
数组的全部内容,我可以将其视为'shared'内存用作不同有效载荷的缓冲区?
API 是整个二进制消息。
offset/len 的原因是因为字节缓冲区是在知道整个 websocket 消息的整个总长度之前分配的。
因此发送给您的字节缓冲区通常比消息大。
如果您想要部分消息,则需要知道 "fin"(最终)标志。
对于部分二进制文件,您将使用 WebSocketPartialListener
接口并使用方法 ...
onWebSocketPartialBinary(java.nio.ByteBuffer payload, boolean fin)
API WebSocketListener
的 obWebSocketBinary
方法及其子类的签名如下所示:
void onWebSocketBinary(byte[] payload, int offset, int len)
让我们称 payload
中的字节来自 offset
由于 len
- 'current_bytes'。我应该如何解释这个 API:
- 'current_bytes'是从客户端发送的整个二进制消息,
payload
数组的其余部分与此会话调用无关 - 'current_bytes' 是 部分 二进制消息,我应该收集数据直到
offset
+len
等于payload.length
- 'current_bytes' 是 部分 二进制消息,但我应该通过检查有效负载内容来管理 'full message delivered' 的概念
如果,据推测,由于len
的offset
不是payload
数组的全部内容,我可以将其视为'shared'内存用作不同有效载荷的缓冲区?
API 是整个二进制消息。
offset/len 的原因是因为字节缓冲区是在知道整个 websocket 消息的整个总长度之前分配的。
因此发送给您的字节缓冲区通常比消息大。
如果您想要部分消息,则需要知道 "fin"(最终)标志。
对于部分二进制文件,您将使用 WebSocketPartialListener
接口并使用方法 ...
onWebSocketPartialBinary(java.nio.ByteBuffer payload, boolean fin)