Deno 中使用 WebSocket 实现即时通信系统

阅读时长 10 分钟读完

简介

Deno 是一个新的运行时环境,与 Node.js 类似,可以运行 JavaScript 代码,但是它内置了 TypeScript,更严格的安全性和可访问性控制,还拥有更好的性能。本文将介绍如何在 Deno 中使用 WebSocket 对象实现简单的即时通信系统,使得客户端和服务端之间可以实现双向的通信。

WebSocket 概述

WebSocket 是一种全双工通信协议,它在客户端和服务器之间建立长连接,使得双方可以随时通过发送和接收消息进行通信。相较于传统的 HTTP 请求,WebSocket 可以更快地处理请求和响应,多了消息推送和事件驱动等优势,因此适用于需要高并发和实时数据通信的场景。

安装 WebSocket 的依赖

在 Deno 中使用 WebSocket 需要安装第三方依赖,采用如下命令:

这里使用的是 Deno 标准库中的 echo_server.ts,使用时需要注意在代码中引用相应的依赖。

实现 WebSocket 功能

在服务端需要绑定 WebSocket,使其可以监听客户端请求。代码如下:

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

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

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

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

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

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

在客户端中需要使用 WebSocket 对象进行连接和通信,核心代码如下:

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

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

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

客户端通过 new WebSocket 创建 WebSocket 对象,调用 send 方法向服务端发送消息。当接收到服务端的消息时,会触发 message 事件进行处理。在服务端需要使用 WebSocket 对象绑定监听事件并进行消息处理,同时使用 async 和 await 关键字进行异步处理。

代码示例

下面是完整的代码示例:

服务端:echo_server.ts

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

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

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

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

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

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

客户端:websocket_client.html

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

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

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

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

总结

本文介绍了如何在 Deno 中使用 WebSocket 实现即时通信系统。除了提供了示例代码之外,还讲解了 WebSocket 的概念和使用方法。通过学习本文,读者可以深入了解 WebSocket 技术,并可以在实际项目中应用和扩展此技术,从而为产品增加实时通信的功能。

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

纠错
反馈