npm 包 socket-mansion 使用教程

阅读时长 8 分钟读完

前言

在现代的前端开发中,Websocket 是一种非常常见的技术。socket-mansion 是一个基于 Websocket 的 npm 包,它提供了一种非常便捷的方式来搭建前端与后端之间的 WebSocket 连接,从而实现实时通信数据传输。

本文将会对 socket-mansion 的基本使用方法进行详细介绍,包含如何在前端使用 socket-mansion 创建 WebSocket 连接,如何定义自己的消息协议,以及如何在前端代码中使用 socket-mansion 对服务器发送消息。值得注意的是,本文假定您已经安装并熟悉 Node.js。

安装 socket-mansion

在使用 socket-mansion 搭建前端与后端之间的 WebSocket 连接之前,我们需要先安装 socket-mansion。在命令行中运行以下命令即可:

npm install socket-mansion

安装完成之后,就可以在您的项目中引入 socket-mansion 了。

创建 WebSocket 连接

创建 WebSocket 连接是 socket-mansion 的第一步。创建 WebSocket 连接的方法是通过创建 SocketClient 实例来实现的。

首先,我们需要从 socket-mansion 引入 SocketClient 类。在您的项目中添加以下代码:

接下来,我们需要定义自己的 WebSocket 连接参数 options。options 可以定义以下参数:

  • url (string): WebSocket 连接的 URL。
  • protocol (string | string[]): WebSocket 连接的协议名称或名称数组。
  • autoReconnect (boolean): 是否支持自动重连。默认为 true。
  • reconnectInterval (number): 重连时间间隔,单位毫秒。默认为 1000。
  • logLevel (string): 输出日志级别。可选值为 "log", "warn", "error"。默认为 "error"。

我们可以使用以下代码来创建新的 SocketClient 实例:

由此,我们就成功创建了一个新的 SocketClient 实例,并建立了一个 WebSocket 连接。其中,url 参数指定了我们的 WebSocket 服务端地址。

定义消息协议

在与 WebSocket 连接建立成功后,我们需要定义正确的消息协议,以与后端进行通信操作。对于这个问题,我建议大家考虑两种方式。

第一种方式是使用原生的 WebSocket 手动发送 JSON 格式的消息。这种方式比较原始,需要我们手动将 JavaScript 对象转换为字符串,并检查消息是否符合我们自己所定义的格式,需要写大量的重复代码。但这种方式的最大优势也在于它的灵活性。

第二种方式是使用 socket-mansion 提供的事件/监听器方法来完成消息协议的代码。这种方式不仅能够消除大量重复的代码和可能出错的过程,同时还能封装协议细节,提供更好的代码可维护性和健壮性。

在本文中,我们将钟情于第二种方式。使用 socket-mansion 的事件/监听器方法,我们可以使用 SocketClient 实例向服务器发送消息,服务器通过注册相应的事件监听器来接收消息。

首先,我们需要定义与后端进行交互的请求消息协议。这个协议包含了我们要发送给服务端的消息名字name和携带的json数据data,我们可以定义一个事件监听器来“添加该数据”并发送给socket-mansion。

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

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

在服务端,我们已经定义了服务器的逻辑,接下来让我们在前端代码中定义发送消息的协议。

首先,我们可以定义一个 send 函数来向服务器发送消息。使用 SocketClient 的 sendMessage 方法来指定要发送的消息名字和数据:

在我们的应用程序中,我们可以在用户点击“发送消息”按钮时调用该函数,并将消息的名称 name 和携带的数据 data 传递给函数。

本例中假定用户会输入一个 聊天内容 的信息,我们可以先定义好聊天内容的输入框input和发送按钮button,稍后使用它们来向服务端发送消息。

然后我们就可以实现 sendMessage 函数了:

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

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

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

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

在 send 函数中,我们 call sendMessage 方法并将消息的名称 "sendMessage" 和携带的消息对象传递给该方法。由此,我们就可以做准备开始与服务端进行通信了。

接收来自服务器端的消息

在与服务端通信过程中,并不仅仅是单向的信息发送。socket-mansion 也提供了非常方便的监听器/事件的机制,允许我们在接收到服务端发送来的消息时采取相应的行动。

要实现此功能,我们可以使用 SocketClient 类的 onMessage 方法。onMessage 方法允许我们注册一个事件监听器,以实时接收并处理从服务端发送的数据。

在上面的代码中,我们使用 SocketClient 的 onMessage 方法注册了一个消息监听器。当我们从服务器端收到消息时,监听器将被触发,并将消息传递给回调函数。在回调函数中,我们可以对消息进行处理(例如,将消息显示在聊天应用程序中)。

完整示例代码

最后,让我们来看一下完整的实例代码:

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

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

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

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

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

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

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

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

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

到此为止,我们已经完成了使用 socket-mansion 完成的前后端 WebSocket 通信的最基本的代码。在实际的应用程序中,我们应该根据自己的实际情况进一步定制化该代码。例如,绑定更多的事件监听器以处理更多的业务逻辑,并处理各种异常情况,以使我们的 WebSocket 应用程序更加鲁棒。

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

纠错
反馈