npm 包 @yawetse/socket.io-adapter-mongo 使用教程

阅读时长 5 分钟读完

前言

Socket.io 提供了 Adapter 接口,可以让开发者使用各种 NoSQL 数据库来存储 WebSocket 的会话信息。在这个方案中,我们将介绍 @yawetse/socket.io-adapter-mongo,一个基于 MongoDB 实现的 Adapter,它可以持久化保存 WebSocket 的会话信息,方便开发者做一些 WebSocket 相关的业务场景。本文将详细介绍如何使用 @yawetse/socket.io-adapter-mongo。

安装

使用 npm 安装 @yawetse/socket.io-adapter-mongo:

使用方法

引入模块

在工程中使用 @yawetse/socket.io-adapter-mongo,首先引入相关模块:

配置参数

在使用时,需要将 MongoDB 的连接字符串和选项以参数传入 MongoDBAdapter 构造函数中,如下所示:

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

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

其中,选项包括 useNewUrlParser 和 useUnifiedTopology,这两个参数是必须的,且可根据需求自行变更。

使用 Adapter

在 Socket.io 的 Server 对象中使用 adapter:

之后就可以通过 adapter 来处理 WebSocket 的会话信息了。

示例代码

以下是一个完整的使用 @yawetse/socket.io-adapter-mongo 的简单示例,通过它可以更好的理解该 npm 包的使用方法。

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

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

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

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

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

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

在示例代码中,我们创建了一个 Socket.io 的 Server 对象,并且引入了 @yawetse/socket.io-adapter-mongo 模块。之后我们根据上述介绍的使用方法进行实例化,然后将其传入 io.adapter()。

在客户端连接时,我们创建了一个 isOnline 变量表示该用户当前是否在线。当用户关闭浏览器时,该 isOnline 变量会被设置为 false,表示该用户已经下线了。当某个用户发送消息时,我们判断其 isOnline 变量,如果为 true ,则使用 io.emit() 来向所有在线用户发送消息;如果为 false,则说明该用户已经下线,此时我们不发送消息,而是将消息记录下来。这样,当该用户上线时,我们就可以将其离线消息发送给他。

总结

通过本文,相信大家已经对 @yawetse/socket.io-adapter-mongo 这个 npm 包的使用方法有了一定的了解。该 npm 包可以使开发者方便的将 WebSocket 的会话信息存储于 MongoDB 中,从而实现一些比较复杂的业务场景。最后,希望本文能为大家提供帮助。

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