如何在实际应用程序中使用Jetty的onWebSocketBinary API

问题描述 投票:1回答:1

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

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'是部分二进制消息,但我应该通过检查有效负载内容来管理自己传递的“完整消息”的概念

假设offsetlen不是payload数组的全部内容,那么我是否可以将其视为用作不同有效载荷缓冲区的“共享”内存?

websocket server jetty
1个回答
2
投票

API是完整的二进制消息。

offset / len的原因是因为在整个websocket消息的整个总长度已知之前分配了字节缓冲区。

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

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

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

onWebSocketPartialBinary​(java.nio.ByteBuffer payload, boolean fin)
© www.soinside.com 2019 - 2024. All rights reserved.