npm 包 exp-upnp 使用教程

阅读时长 8 分钟读完

前言

在前端开发中,我们经常需要与其他设备进行通信,比如局域网内的打印机、音响、摄像头等等。UPnP(通用即插即用协议)是一个实现智能家居互联的网络协议,可以让不同品牌、不同型号的设备在同一个网络环境中互相发现、互相通信。而 exp-upnp 是一个基于 UPnP 协议实现的 npm 包,可以方便地帮助前端开发者实现 UPnP 相关功能。

本文将介绍 exp-upnp 的使用方法,并附有相应的示例代码,以帮助读者全面理解该 npm 包的实现和使用。

安装

在使用 exp-upnp 之前,我们需要先进行安装。通过以下命令即可完成安装:

使用方法

使用 exp-upnp 前,我们需要先引入该包:

exp-upnp 包提供了两个类:UpnpClientUpnpServer。我们在本文中介绍的是 UpnpClientUpnpClient 类主要用于发现 UPnP 设备,为已发现的设备提供操作服务等。

实例化 UpnpClient

创建 UpnpClient 实例时,我们需要指定 devicesoptions 参数。

  • devices:数组,用于筛选指定类型的 UPnP 设备。
  • options:对象,用于定义 UpnpClient 的相关选项,包括:
    • st: 搜索 UPnP 设备时使用的设备类型标识 (Service Type)。默认为 'ssdp:all'。
    • mx: 搜索 UPnP 设备时的最大等待时间。默认为 3 秒。
    • localaddress: 设置局域网监听的 ip 地址或者网卡。默认为本机所有网卡。
-- -------------------- ---- -------
----- ------- - -
  -
    ----- -----------------------------------------
  -
--

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

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

搜索 UPnP 设备

实例化 UpnpClient 之后,可以使用 search() 方法搜索 UPnP 设备。该方法返回一个 Promise 对象,我们可以通过 then 方法来获取搜索到的设备:

获取 UPnP 服务

如果已知 UPnP 设备的 UUID(设备唯一标识符),可以使用 getServicesByUUID(uuid) 方法获取该设备的服务并返回一个 Promise 对象:

获取 UPnP 服务的状态

我们可以使用 getState(service, variable) 方法获取指定变量的状态:

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

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

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

调用 UPnP 服务方法

使用 UpnpClient 调用 UPnP 服务需要提供以下三个参数:

  • service: 需要调用的服务对象。
  • params: 请求服务的参数。
  • action: 调用的方法名。
-- -------------------- ---- -------
----- ------- - -
  --- -------------------------------------
  ----- ---------------------------------------------
  ----------- -----------------------
  ------------ ---------------------
  -------- ------------------------
  -------- -
    -
      ----- --------------------
      ------------- -
        -
          ----- -------------
          ---------- -----
          --------------------- -----------------------
        --
        -
          ----- -------------
          ---------- -----
          --------------------- ----------------
        --
        -
          ----- ---------------------
          ---------- -----
          --------------------- ------------------------
        -
      -
    -
  -
--

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

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

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

示例代码

下面为一个完整的示例代码,以帮助读者更好地理解 exp-upnp 的使用方法:

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

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

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

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

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

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

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

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

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

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

结论

exp-upnp 是一个基于 UPnP 协议实现的 npm 包,它帮助前端开发者快速完成 UPnP 设备的搜索、服务方法调用等功能。在本文中,我们介绍了 exp-upnp 的使用方法,并提供了示例代码以帮助读者更好地理解该包的实现和使用。通过学习本文章,读者们可以掌握 UPnP 协议的应用,进而更好地完成前端开发工作。

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

纠错
反馈