npm 包 egg-ws 使用教程

阅读时长 6 分钟读完

在前端开发中,WebSocket 多用于实现即时通讯、实时数据更新等功能。而 egg-ws 就是一个基于 Egg.js 的 WebSocket 插件,使得在 Egg.js 后端应用中实现 WebSocket 功能变得异常简单。

本文将详细讲解 egg-ws 的使用方法,包括安装配置和 API 说明,同时将提供示例代码和学习指导,帮助开发者更好地理解和应用 egg-ws。

安装和配置 egg-ws

首先,我们需要安装 egg-ws 插件:

其次,在 config/plugin.js 文件中配置插件:

最后,在 config/config.default.js 文件中,我们要添加 ws 配置项:

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

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

其中的参数含义如下:

  • path:WebSocket 路径,默认为 '/ws'
  • heartbeatInterval:心跳间隔时间,默认为 1 分钟
  • heartbeatTimeout:心跳超时时间,默认为 10 秒
  • maxPayload:最大数据长度,默认为 1MB
  • generateId:自定义 ID 生成函数,具体内容可以参考官方文档

使用 egg-ws

在 Egg.js 中使用 egg-ws 主要分为两个部分:服务端和客户端。

服务端

在服务端使用 egg-ws 非常简单,只需要按照以下步骤进行操作:

  1. 在 Egg.js 项目中创建 WebSocket 的控制器文件,例如 /app/controller/ws.js

  2. 在控制器文件中,创建 WebSocket 处理程序,并定义以下生命周期事件:

  • connection:当客户端连接时触发该事件。
  • message:当客户端发送消息时触发该事件。
  • close:当客户端关闭连接时触发该事件。

下面是一个示例代码:

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

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

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

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

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

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

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

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

在上面的代码中,我们首先要校验客户端请求中的 token 是否有效,如果有效则将其连接到指定房间并进行数据通信。

  1. 接下来,在 /app/router.js 文件中定义 WebSocket 的路由和控制器方法:
-- -------------------- ---- -------
-- -------------

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

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

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

以上便完成了 Egg.js 服务端的应用配置。

客户端

在客户端,我们只需要按照如下步骤操作:

  1. 在前端中引入 socket.io 库:
  1. 创建 socket.io 实例,并连接到 Egg.js 后端:
-- -------------------- ---- -------
-- --------

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

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

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

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

在上面的代码中,我们建立了与后端的连接,并监听了连接、消息和关闭等事件。

API 说明

在 egg-ws 中,可以使用的 API 有以下方法:

  • app.ws.join(roomId):将当前连接加入指定的房间。
  • app.ws.leave(roomId):将当前连接退出指定的房间。
  • app.ws.to(roomId):向指定的房间发送消息。
  • ctx.websocket.send(msg):将消息发送给当前连接的客户端。

总结

本文详细介绍了如何在 Egg.js 中使用 egg-ws,包括安装和配置、客户端和服务端应用以及详细的 API 说明。通过学习 egg-ws,开发者可以更加便捷地实现 WebSocket 功能,提高开发效率。

示例代码:https://github.com/Lupusa87/egg-demo/tree/master/egg-ws-demo

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

纠错
反馈