Nativescript-ActionCable 使用教程

阅读时长 11 分钟读完

前言

npm 作为现代化 JavaScript 应用程序的软件包管理器,在前端开发中使用非常广泛。其中,Nativescript 是构建跨平台原生应用程序最受欢迎的解决方案之一,同时它也具有许多支持的 npm 包帮助开发人员提高生产力。

actioncable 是 Ruby on Rails 框架中默认集成的 WebSocket 解决方案,但是它也能够被用于其他语言和框架中。在我们的项目中,我们使用了 actioncable 作为我们前端与后端之间进行实时通讯的工具。

Nativescript-ActionCable 是一个可以让 Nativescript 应用程序使用 actioncable 的 npm 包。本文将会介绍如何使用该 npm 包。

安装

你可以使用 npm 安装 Nativescript-ActionCable:

然后在你的应用程序中导入:

使用指南

使用 Nativescript-ActionCable,你可以轻松地连接到 actioncable 服务器、订阅频道、发送消息,以及断开连接。

首先,我们需要创建一个 connection 对象,这个对象是一个连接到 actioncable 服务器的代理。我们需要传递连接 URL 及连接参数给这个对象。

-- -------------------- ---- -------
----- ---------- - -----------------------------
  ----------------------------
  -
    -------- -
      -- ---- ------ ---- -------
    --
    ------------ -
      -- ---- ------ ----- ------
    --
    ---------- ----
  -
--
展开代码

然后,我们可以使用这个连接对象订阅一个频道:

订阅成功后,我们就可以通过 channel 对象来发送和接收消息了。在这个例子中,我们监听接收到的数据并打印到控制台。在使用该命令行命令并打开服务端口的情况下,发送 WebSocket 消息应会立即显示在您的应用程序终端上。

如果我们不再需要该连接和频道,我们可以关闭它们:

示例代码

在下面的示例中,我们将使用 Nativescript-ActionCable 创建一个简单的聊天室应用程序。

服务端

我们使用 Ruby on Rails 框架创建一个简单的 actioncable 服务器。你可以通过执行以下命令创建 Rails 应用程序:

这个命令会在 chat-app 文件夹中创建一个 Rails 应用程序。

接下来,我们创建一个简单的 Messages 控制器,它将返回我们之前聊天框中已发送的所有消息。

然后,我们创建 ChatChannel。在聊天室中,频道用于接收并传递来自客户端的消息,服务器会将其发送给其他订阅了此频道的客户端。

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

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

    ---------------------------- ------- -------- ------------
  ---
---
展开代码

客户端

我们使用 Nativescript-ActionCable 创建一个简单的客户端应用程序。

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

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

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

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

----------------- ------- -- -- -------- ---
展开代码

在这个例子中,我们通过 createConnection() 创建了一个连接。我们使用了 URL 支持 WebSocket 协议的端口用来连接到我们的服务器,以及一些可选的参数。

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

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

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

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

  ------------- -
    ------------------------------ - ------- ---
  -
-
展开代码

在这个例子中,我们创建了一个聊天视图模型,它的职责是向聊天框中添加和删除消息。在这个构造函数中,我们创建了一个 ObservableArray 数组来存储我们的消息。我们还通过 subscribe() 方法订阅了 ChatChannel,并设置了 received() 方法来监听我方其他订阅了 ChatChannel 的客户端发来的消息。

我们使用 perform() 方法发送了 speak 消息,并发送最新的消息到所有订阅了 ChatChannel 的应用程序。

我们创建了一个 ChatPage,其职责是向用户显示聊天框和滚动到最新消息。在这个例子中,我们只展示了聊天框,让用户可以在应用程序中发送和接收实时的消息。

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

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

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

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

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

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

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

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

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

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

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

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

  ------------------- -
    ----- ------- - ------------------- - ---------------------------------------------------------------------- - --
    ------ ---- - --------
  -
-
展开代码

这个 ChatPage 渲染了一个聊天框和一个输入框,用户可以在其中输入消息并发送。在构造函数中,我们创建了一个 TextField 组件,用户可以在其中输入消息。我们添加了一个 returnPress 事件监听器,当用户按下“返回”键时,我们将发送消息。我们还创建了一个 ObservableArray,并使用它来绑定聊天框中的消息。我们使用了 Label 组件来为每个消息添加样式。

在主函数中,我们创建了一个聊天页面对象和一个与其关联的 ViewModel,并将该 ViewModel 传递给页面的绑定上下文。我们使用 run 方法来创建当前应用程序的界面。

最后,我们打开浏览器并输入 http://localhost:3000/messages,我们可以使用 Postman 这样的 API 开发工具测试消息的发送和接收。

总结

本文的目的是帮助您开始使用 Nativescript-ActionCable,它是 Nativescript 应用程序中的一个方便的 WebSocket 库。在聊天室应用程序中,我们通过 Nativescript-ActionCable 使用了 actioncable 协议,以实时接收和发送消息。

我们介绍了如何使用 Nativescript-ActionCable 创建连接、订阅频道、发送事件、接收消息以及断开连接等操作。此外,我们还提供了示例代码以帮助您了解如何使用 Nativescript-ActionCable。祝您好运!

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