0

我正在用 HTML5 构建多人游戏。我已经阅读了一些关于通过 WebSockets 通过像 Uint8Array 这样的 ArrayBuffers 发送二进制数据的阅读,因为我想尽可能地避免开销(所以没有 JSON)。但是,我仍然不知道如何通过 WebSocket 实际发送特定的变量类型(尤其是 1 位布尔值)。

例如,我想通过 1 条消息中的二进制数据发送 5 个布尔值和 3 个数字(精度稍后确定)(因此没有多次发送)。在这种情况下:

  1. 编号 - 帧编号
  2. 布尔值 - W
  3. 布尔值 - A
  4. 布尔值 - S
  5. 布尔值 - D
  6. 布尔值 - 鼠标按下
  7. 数字 - 鼠标 X
  8. 数字 - 鼠标 Y

我将如何处理这个?我可以把它全部放入一个 Uint8Array 中吗?那不是一个字节吗?如果我只需要说 5 位而不是 8 位,它还会占用 8 位吗?如何将布尔值附加到 ArrayBuffer 并从 ArrayBuffer 中提取布尔值?还是我完全使用了错误的方法?

谢谢您的帮助。

4

1 回答 1

1

您可以使用更易于使用的 DataView 来编写数据流。

https://developer.mozilla.org/en-US/docs/Web/API/DataView?redirectlocale=en-US&redirectslug=Web%2FJavaScript%2FTyped_arrays%2FDataView

于 2013-10-16T02:52:32.117 回答