使用SSDP显示网络中的所有设备

时间:2016-09-06 17:50:10

标签: javascript android node.js websocket ssdp

我经常搜索这个问题,但我仍然有点困惑,不知道我到底想做什么是可能的。

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

在对它进行了一些研究之后,我意识到在浏览器上做这种事情时的替代方案是创建某种Chrome扩展,它能够执行SSDP并发送M搜索,或者打开websockets使用websocket API(不要认为这对我的SSDP特别有用,但我可能错了)。

考虑到我要做的事情,这些替代方案中的任何一个都有帮助。我甚至想做什么?我再一次在这个主题上做了我的研究,但我真的无法找到一个明确的答案。如果有可能,我真的很感激教程的链接,或者只是关于如何完成我想要做的事情的一般想法。

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

感谢您的时间!

2 个答案:

答案 0 :(得分:1)

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

不幸的是,Chrome应用have been deprecated支持普通网络应用(至少在Chrome操作系统之外),并且您已经发现,您无法通过普通的网络API进行SSDP。套接字API正在运行,但是它们无法确定它们是否以及何时可以解决允许随机Web应用程序执行加入本地多播组等事情所固有的安全问题。

Websockets不太可能提供您所需的功能。

答案 1 :(得分:0)

它可能。

  

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

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

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

您无需专门使用Chrome应用。您可以在基于Javascript的跨平台框架(如Electron)中编写应用程序。它将成为PC和手机的全功能“网络”应用程序,您可以使用Cordova等。