npm 包 onf-simple-chat 使用教程

阅读时长 9 分钟读完

前言

随着 Web 技术的不断发展,网页应用的交互性和实时性要求越来越高,因此实现前端实时聊天成为了一种常见的需求。在此场景下,有许多开源库和框架来方便我们开发实现前端聊天,如 Socket.io、Syncano 和 Firebase 等等。本文将介绍一款基于 React 的 onf-simple-chat npm 包,该包提供了简单易用的前端聊天功能,并带来了简单而强大的可扩展性。

安装与使用

安装

使用 npm 安装 onf-simple-chat 包:

使用

在 React 代码中使用 onf-simple-chat:

在上述代码中,roomId 表示聊天室 ID,token 表示用户的 access-token。

自定义

onf-simple-chat 提供了一些可选属性来自定义聊天框体验。

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

在上述代码中,我们可以看到:

  • title 表示聊天室的标题,默认是 'Simple Chat';
  • defaultMessage 表示默认的聊天提示信息,默认是 'Type your message here';
  • namePlaceholder 表示输入用户名称的占位文字提示,默认是 'Unknown';
  • sendButtonText 表示发送按钮的文案内容,默认是 'Send';
  • apiBaseUrl 表示后端接口的基础 URL,默认是 'https://api.onf.io/chat';
  • onNameChange 表示用户在输入用户名称时回调,接收用户名称作为参数;
  • onMessageSend 表示用户发送聊天消息时回调,接收消息内容作为参数。

代码解析

onf-simple-chat 的内部实现是基于 React 和 WebSocket。

客户端

数据结构定义

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

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

在代码中,我们定义了两个数据结构:MessageDataRoomData。其中,MessageData 包含了用户的名称、聊天内容和消息时间。

WebSocket 连接

我们使用 WebSocket 类来建立 WebSocket 连接:

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

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

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

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

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

  ---
-

在上述代码中,我们在 constructor() 中创建 WebSocket,并在 open 事件中向服务器发送身份认证请求。

接收消息

在接收到来自聊天室的消息时,我们可以将其添加到聊天区域:

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

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

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

  ---
-

在上述代码中,我们创建了一个 CustomEvent,并将聊天室消息保存在 detail 属性中。

发送消息

当用户在输入框中输入一条新消息时,我们可以将其发送到服务器:

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

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

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

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

在上述代码中,我们将用户的名称、聊天内容和消息时间封装为一个 messageData 对象,并将其发送到服务器。

组件

引入样式

为 onf-simple-chat 自定义样式,我们需要在代码中导入 CSS 文件:

渲染

在组件中,我们将在聊天区域监听 message 事件:

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

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

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

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

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

在上述代码中,我们使用 ChatClient 建立 WebSocket 连接并监听 message 事件。当该事件发生时,聊天区域将重新渲染。

发送消息

在 input 标签中输入完成后,将会通过 ChatClient 发送一条消息:

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

  ---

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

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

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

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

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

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

在上述代码中,我们使用 form 元素监听 submit 事件,当用户在输入框中输入一条新消息并点击发送按钮时,该事件将触发,并调用 ChatClient 将消息发送到服务器。

总结

在本文中,我们介绍了 onf-simple-chat npm 包,并提供了详细的安装和使用指南。我们还讨论了 onf-simple-chat 的内部实现,并提供了示例代码供读者参考。希望本文能够帮助大家更好地理解前端聊天功能的实现方式,对大家学习和使用相关技术带来一定的指导意义。

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

纠错
反馈