Deno 中使用 Websocket 时如何发送二进制数据?

阅读时长 4 分钟读完

在 Deno 中使用 Websocket 进行数据通信时,我们通常会发送文本数据。但是,有时候我们需要发送二进制数据,比如图片、音视频等。

本文将介绍在 Deno 中如何发送二进制数据,以及如何处理可能遇到的 ModuleNotFoundError 问题。

发送二进制数据

我们可以通过 Blob 对象将二进制数据转换为可发送的数据类型。Blob 对象可以通过 new Blob() 方法创建,该方法接收一个数组作为参数,数组的元素是二进制数据。

下面是一个简单的例子:

在上面的例子中,我们创建了一个 Uint8Array 对象,表示一个由 3 个字节组成的二进制数据。然后,我们将这个二进制数据转换为 Blob 对象,并将其发送给 Websocket。

ModuleNotFoundError 问题

在使用 Deno 进行开发时,我们可能会遇到 ModuleNotFoundError 问题。这是因为 Deno 的模块加载机制与 Node.js 不同,需要我们手动指定模块的路径。

下面是一个可能遇到的问题场景:

在上面的代码中,我们使用了 Node.js 中的 ws 模块,但是在 Deno 中会报错:

这是因为 Deno 不支持 Node.js 的模块加载机制,需要我们手动指定模块的路径。

我们可以使用 Deno 的 URL 格式来指定模块的路径,比如:

在上面的代码中,我们使用了 Deno 的 URL 格式指定了 ws 模块的路径,这样就不会报错了。

示例代码

下面是一个完整的示例代码,演示了如何在 Deno 中发送二进制数据:

-- -------------------- ---- -------
-- --------- --
------ - ----- - ---- ---------------------------------------
------ - ---------------- --------- - ---- ----------------------------------

----- -------- ------------ ---------- -
  ----- ---- - --- ----------------- ----- -------
  ----- ---- - --- -------------
  --------------
-

----- -------- ------ -
  ----- ------ - ------- ----- ---- ---
  ---------------------- -- ------------------------

  --- ----- ------ --- -- ------- -
    ----- - ----- -- ---------- -- ---------- ------- - - ----
    -----------------
      -----
      ----------
      ----------
      --------
    ------------------
  -
-

-------
-- -------------------- ---- -------
-- --------- --
----- ------ - --- ---------------------------------

------------------------------- -- -- -
  -------------------------
---

---------------------------------- ------- -- -
  ------------------------
---

-------------------------------- -- -- -
  ----------------------------
---

在上面的代码中,我们创建了一个 Websocket 服务器和一个 Websocket 客户端。服务器会在客户端连接时发送一个二进制数据,客户端接收到后输出到控制台。

总结

本文介绍了在 Deno 中发送二进制数据的方法,以及可能遇到的 ModuleNotFoundError 问题。希望读者能够掌握如何在 Deno 中使用 Websocket 进行数据通信,以及如何解决可能出现的问题。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65067d8a95b1f8cacd256e35

纠错
反馈