【问题标题】:Using SSDP to display all devices in network使用 SSDP 显示网络中的所有设备
【发布时间】:2017-01-14 06:25:22
【问题描述】:

我经常用谷歌搜索这个问题,但对于我到底想要做的事情是否可行仍然有点困惑。

基本上,我正在尝试向我的 Web 应用程序添加一个下拉菜单,其中列出了连接到网络的所有设备。当我说设备时,我不是在谈论所有设备。我说的是我正在使用的实现 SSDP 的某些硬件设备。我已经创建了发送 M-SEARCHes 并成功找到所有设备的 Node.js 程序,但我知道 Node.js 不是浏览器 javascript,我无法在终端上显示 Node 调用的输出浏览器(如有错误请指正)。

在对它进行了更多研究之后,我意识到在浏览器上执行此类操作时的替代方法是创建某种能够执行 SSDP 并发送 M-searches 的 Chrome 扩展程序,或者打开 websockets使用 websocket API(不要认为这在我的 SSDP 案例中特别有用,但我可能错了)。

鉴于我正在尝试做的事情,这些替代方案中的任何一个都有帮助。我想要做的甚至可能吗?再一次,我已经对这个主题进行了研究,但我真的无法找到明确的答案。如果可能的话,我非常感谢教程的链接或关于如何完成我正在尝试做的事情的一般想法。

我知道我最近在 StackOverflow 上发布了一些关于此的内容,但没有得到任何答案或回复,但我对这个主题进行了更多研究,并且觉得我确实有更好的理解。话虽如此,我仍然很感激有关如何解决这个问题的一些指导,因为我在网上没有发现任何有用的东西。

感谢您的宝贵时间!

【问题讨论】:

    标签: javascript android node.js websocket ssdp


    【解决方案1】:

    据我所知,Chrome 扩展程序无法访问 sockets.udp API。在 Chrome 中执行此操作的正确位置可能是 Chrome 应用程序,因为它们可以进行 UDP 多播:https://codereview.chromium.org/12684008/。事实上似乎已经有一个SSDP app ...

    不幸的是,Chrome 应用程序have been deprecated 支持普通的网络应用程序(至少在 Chrome 操作系统之外),而且您发现您还不能通过普通的网络 API 执行 SSDP。套接字 API 正在工作中,但不知道它们是否以及何时可以解决允许随机 Web 应用程序执行诸如加入本地多播组之类的事情所固有的安全问题。

    Websocket 不太可能满足您的需求。

    【讨论】:

    • 感谢您的回答!所以本质上,我不可能做我想做的事,至少在 Chrome 中是这样吗?比如说其他浏览器,比如 Mozilla Firefox,可能吗?
    • 使用 chrome 应用程序是可能的,只是很快您就无法再将新应用程序放入商店,并且在一两年内整个商店将关闭(Chrome OS 除外)。在 Mozilla 中将其作为扩展可能是可能的,但我猜这也会很棘手:这还不是浏览器能够做到的。如果您真的想在浏览器中显示 SSDP 结果,我认为您应该创建并运行一个 Web 服务(服务器),将这些信息提供给您的 Web 应用程序。当然,在那个时候,Web 应用程序的全部目的是有问题的......
    • 太好了,感谢您提供的信息。我已经在与 REST API 进行通信,所以也许我可以尝试将 SSDP 信息添加到该 API。谢谢。
    【解决方案2】:

    有可能。

    Node.js 不是浏览器 javascript,我无法在浏览器的终端中显示 Node 调用的输出

    它们都运行 Javascript。如果无法访问终端,请在终端中运行您的 nodjs 或将输出通过管道传输到文本文件。在这两种情况下,console.log() 都应该能够打印出来。

    对于客户端和服务器端的 SSDP,使用这个:https://www.npmjs.com/package/node-ssdp

    您无需专门使用 Chrome 应用程序。您可以使用基于 Javascript 的跨平台框架(如 Electron)编写应用程序。它将成为一个功能齐全的“网络”应用程序,适用于 PC 和移动设备,您可以使用 Cordova 等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-17
      • 2021-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      相关资源
      最近更新 更多