Hapi.js 实践:使用 Ws 插件实现基于 WebSocket 的通信

正在进行中的Web应用程序和在线服务的性能和互动性要求越来越高。一个有效的方法是利用WebSocket创建实时, 基于事件的通信机制。在本文中,我们将介绍如何使用 Hapi.js 和 Ws 插件实现 WebSocket 通信。

准备工作

在开始之前,请确保您已安装 Node.js 和 npm,因为后面的示例代码将依赖这两者。

接下来,我们将创建一个新的 Hapi.js 项目。打开命令行窗口,定位到您想要创建项目的位置,然后运行以下命令:

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

这会创建一个新的 Node.js 项目。-y 参数表示略过所有交互式提示,使用默认选项。

接下来,我们将安装必要的依赖项:Hapi.js 和 Ws。

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

Hapi.js WebSocket 示例

接下来,我们将创建一个简单的基于 WebSocket 的聊天应用程序。我们将使用 Hapi.js 的插件体系结构和 Ws 插件实现。

Hapi.js 的插件是由一个包含插件特定信息的数据对象和一个包含插件选项的选项对象组成。在我们的例子中,我们将为 Hapi.js 创建两个插件,一个用于注册 WebSocket 和一个用于发送所有 WebSocket 消息。

创建 WebSocket 插件

首先,我们将创建一个注册 WebSocket 的插件。该插件将创建一个 WebSocket 服务器对象,并将其添加到请求生命周期中。

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

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

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

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

我们在该插件中使用 onRequest 生命周期方法,将 WebSocket 服务器对象添加到请求中。

创建 WebSocket 发送插件

接下来,我们将创建一个发送所有传入 WebSocket 消息的插件。

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

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

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

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

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

该插件会在插件注册期间使用 onPostAuth 生命周期方法,处理所有入站 WebSocket 消息,并将消息发送到所有客户端。

最后,我们将创建一个简单的 Hapi.js 服务器,并在其中注册上述两个插件。

-- ---------

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

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

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

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

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

到此为止,我们已准备好运行基于 WebSocket 的聊天室应用程序。现在,我们将使用浏览器中的 JavaScript 创建并连接 WebSocket。

创建 WebSocket 客户端

-- ---------

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

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

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

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

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

该客户端会在打开网页后连接到 WebSocket 服务器,并将聊天消息发送给服务器。任何此类消息都会从服务器广播到所有 WebSocket 客户端。

结论

通过使用 Hapi.js 和 Ws 插件,我们可以轻松地构建基于 WebSocket 的应用程序。我们的聊天应用程序可以扩展到支持多个聊天室,以及连接到其他组件例如数据库。

但是,创建 WebSocket 应用程序并不总是易如反掌。为了避免性能问题,请尽可能使用事件机制。此外,最好限制连接数并使用适合您应用程序的队列方法(例如,使用 Kue 等消息队列)。最后还要考虑网络的带宽和延迟,以确保应用程序始终运行良好。

在本文中,我们只是简单地介绍了如何使用 Hapi.js 和 Ws 构建 WebSocket 应用程序。我们的目的是为您提供精益实用的样本代码,以帮助您构建自己的 WebSocket 应用程序。

祝学习愉快!

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/67010c410bef792019b0ca6d