使用SSDP显示networking中的所有设备

我经常使用这个问题,但对于我究竟是做什么是可能的,我还是有点困惑。

基本上,我试图添加一个下拉菜单到我的Web应用程序,其中列出了连接到networking的所有设备。 当我说设备时,我不是在谈论所有的设备; 我正在谈论某些我正在使用SSDP的硬件设备。 我已经创build了发送M-SEARCH的Node.js程序,并成功find所有的设备,但我明白,Node.js不是一个浏览器的JavaScript,并且我不能显示在一个terminal上的节点调用的输出浏览器(请纠正我,如果我错了)。

在做了一些更深入的研究之后,我意识到在浏览器上做这种types的替代方法是创build某种能够执行SSDP并发送Msearch的Chrome扩展,或者使用websocket打开websocket API(不要认为这对我的SSDP特别有用,但我可能是错的)。

鉴于我想要做的是,这些替代scheme是否有帮助。 我试图做甚至可能吗? 我再一次在这个话题上做了研究,但是我还没有find明确的答案。 如果可能的话,我真的很感谢链接教程或只是一般想法如何完成我想要做的事情。

我知道我最近在StackOverflow上发布了一些关于这个的东西,没有得到答案或答复,但是我对这个话题做了更多的研究,觉得我有更好的理解。 话虽如此,我仍然感谢如何解决这个问题的一些方向,因为我没有在网上find任何有用的东西。

感谢您的时间!

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

不幸的是,Chrome应用程序已被弃用,以支持正常的Web应用程序(至less在Chrome操作系统之外),正如你发现你不能通过普通的web APIs来做SSDP。 套接字API正在工作,但是他们不知道是否以及何时可以解决允许随机Web应用程序执行诸如join本地多路广播组这样的固有安全问题。

Websockets不太可能提供你所需要的。

这是可能的。

Node.js不是一个浏览器的JavaScript,而且我也不能在浏览器上显示一个terminal节点调用的输出

他们都运行Javascript。 在terminal中运行您的nodjs,或者如果terminal无法访问,请将输出pipe道输出为文本文件。 在这两种情况下console.log()应该能够打印出来。

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

您无需特别使用Chrome应用程序。 您可以使用基于Javascript的跨平台框架(如Electron)编写应用程序。 它将成为一个function齐全的“networking”应用程序的个人电脑和手机,你可以使用cordova等。