如何在现实世界的应用程序中使用 Jetty 的 onWebSocketBinary API



obWebSocketBinary方法的API签名WebSocketListener及其子类如下所示:

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"是部分二进制消息,但我应该通过检查有效负载内容来管理"传递的完整消息"的概念
如果可能到期

len offset不是payload数组的全部内容,我可以将其视为用作不同有效负载缓冲区的"共享"内存吗?

API 是整个二进制消息。

偏移量/len 的原因是字节缓冲区是在知道整个 websocket 消息的整个总长度之前分配的。

因此,发送给您的字节缓冲区通常比消息大。

如果你想要部分消息,那么你需要知道"fin"(最终(标志。

对于部分二进制,您将使用 WebSocketPartialListener 接口并使用方法...

onWebSocketPartialBinary​(java.nio.ByteBuffer payload, boolean fin)

最新更新