如何在 Deno 中使用 WebSocket 来构建实时 Web 应用?

阅读时长 7 分钟读完

前言

WebSocket 是一种在客户端和服务端之间进行双向通信的网络协议。它是建立在 HTTP 协议基础上的,但是它比起 HTTP 协议有更好的实时性和更少的网络流量。

在实时 Web 应用中,WebSocket 广泛应用于实时通信、消息传递、在线游戏等方面。本文将介绍如何在 Deno 中使用 WebSocket 构建实时 Web 应用。

准备工作

在使用 WebSocket 构建实时 Web 应用前,我们需要准备一下工作。

首先需要安装 Deno,Deno 是一个现代化的 JavaScript 和 TypeScript 运行时环境。可以通过以下命令安装 Deno:

安装完毕后,可以使用以下命令检查 Deno 版本:

其次需要安装 WebSocket 库,Deno 中提供了 WebSocket API。可以通过以下命令来安装 WebSocket 库:

至此,准备工作完成。

使用 WebSocket 构建实时 Web 应用

使用 WebSocket 来构建实时 Web 应用有两个关键角色,分别为客户端和服务端。在服务端上我们需要调用 WebSocket 的方法,包括监听客户端的连接、处理客户端的消息和响应客户端的请求等;在客户端上,我们需要发送消息到服务端并处理服务端的响应。

接下来,我们将介绍如何实现一个简单的服务端和客户端的 WebSocket 实时通信。

服务端

监听客户端的连接

在服务端上,我们需要使用 Deno 内置的 Deno.listen 方法来监听客户端的连接。当客户端连接上来之后,我们需要为每个连接创建一个 WebSocket 对象,并且添加 message 事件和 close 事件回调函数。

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

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

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

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

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

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

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

处理客户端的消息

处理客户端的消息很简单,我们只需要在 message 事件回调函数中处理客户端传过来的数据即可。在本例中,我们将消息原样返回给客户端。

响应客户端的请求

在 WebSocket 中,客户端可以向服务端发送请求,服务端需要处理这些请求并向客户端返回响应。我们可以在服务端的 message 事件回调函数中读取客户端的请求,并根据请求返回相应的响应。

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

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

在上面的示例中,我们处理了客户端发送的 message 请求和 ping 请求,并分别返回相应的响应。

客户端

客户端使用 WebSocket 也很简单,我们只需要创建 WebSocket 对象并连接到服务端,然后就可以通过对象的 send 方法向服务端发送数据。

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

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

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

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

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

在上面的示例中,我们使用 HTML 和 JavaScript 来创建了一个简单的实时通信页面。当用户在页面上输入消息并点击发送按钮时,客户端会将消息发送到服务端,并将服务端返回的数据显示在页面上。

总结

本文介绍了如何在 Deno 中使用 WebSocket 来构建实时 Web 应用,包括服务端的监听客户端的连接、处理客户端的消息和响应客户端的请求,以及客户端向服务端发送数据等。实时 Web 应用是当前 Web 应用开发中非常重要的一部分,希望本文能对读者有所启发。

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

纠错
反馈