详解 npm 包 ws-promise-server 的使用教程

阅读时长 9 分钟读完

在前端开发中,WebSocket 是一个常用的协议,可以实现即时通信和服务端推送等功能。而使用 WebSocket 协议需要编写服务端代码,而对于前端工程师来说,编写服务端代码比较困难。幸运的是,现在有一些 npm 包可以帮助我们快速地编写服务端代码,本文就为大家介绍一款名为 ws-promise-server 的 npm 包。

简介

ws-promise-server 是一个基于 ws 开发的 WebSocket 服务器 npm 包,它提供了一系列使用 Promise 封装的 WebSocket API,让前端工程师可以更加方便地编写 WebSocket 服务端代码。

ws-promise-server 提供了以下几个 API:

  • WebSocketServer: WebSocket 服务器类
  • WebSocket: WebSocket 类
  • EventEmitter: 事件处理器类

下面我们将一一介绍它们的用法。

安装

使用 npm 安装 ws-promise-server:

WebSocketServer 类

WebSocketServer 类是我们使用 ws-promise-server 的入口,我们可以通过它来创建 WebSocket 服务器对象。

在创建 WebSocketServer 对象时,需要传入一个配置对象,其中最重要的是 port 属性,它指定了服务器监听的端口号。

下面是一个使用 WebSocketServer 类创建 WebSocket 服务器的简单例子:

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

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

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

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

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

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

代码解释:

  1. 首先,我们从 ws-promise-server 中导入 WebSocketServer 类。

  2. 然后,我们创建一个服务器对象,并指定监听端口为 3000。

  3. 接着,我们监听 connection 事件,当有客户端连接时,触发该事件,其中的 webSocket 参数是一个 WebSocket 对象,我们可以操作它。

  4. connection 事件的回调函数中,我们给客户端发送了一个 GREETING 类型的消息,并监听了 messageclose 事件。

  5. 当客户端发送消息时,我们输出消息内容。

  6. 当客户端关闭连接时,我们输出断开连接的消息。

WebSocket 类

WebSocket 类表示一个 WebSocket 对象,它提供了一系列可以操作 WebSocket 的方法和属性。

我们一般是在 connection 事件的回调函数中接收到 WebSocket 对象,然后在该对象上操作,如发送消息等。

下面是一个使用 WebSocket 类发送消息的简单例子:

代码解释:

connection 事件的回调函数中,我们调用 send 方法发送了一条消息,这里发送的消息为一个 JSON 对象。

EventEmitter 类

EventEmitter 类是一种常用的事件处理器,它可以让我们在代码中自定义事件,并在事件触发时执行回调函数。

ws-promise-server 中的 WebSocketServer 和 WebSocket 类都是 EventEmitter 的派生类,它们也提供了一些自定义事件。

例如,当我们想要发送群组消息时,可以通过自定义事件来实现:

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

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

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

代码解释:

  1. joinGroup 事件中,我们将用户加入指定的群组,这里通过给 WebSocket 对象增加一个自定义属性 groupName 来实现。

  2. sendGroupMessage 事件中,我们遍历所有客户端,并只给群组中的客户端发送消息。

  3. 在客户端中,可以通过发送 joinGroup 事件,来将自己加入群组;通过发送 sendGroupMessage 事件,来给群组内的所有客户端发送消息。

示例代码

完整的 ws-promise-server 示例代码如下:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

在终端中使用 node server.js 启动服务器。在浏览器中打开 index.html 文件,就可以访问 WebSocket 服务器,并实现基本的群组功能。

总结

本文介绍了 npm 包 ws-promise-server 的使用教程,包括 WebSocketServer、WebSocket 和 EventEmitter 三个类的用法,以及如何实现基本的群组功能。

ws-promise-server 的使用可以让前端工程师更加方便地编写 WebSocket 服务端代码,在实现即时通信和服务端推送等功能时,可以更加高效地完成应用的编写。

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

纠错
反馈