Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用SSDP显示网络中的所有设备_Javascript_Android_Node.js_Websocket_Ssdp - Fatal编程技术网

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

Javascript 使用SSDP显示网络中的所有设备,javascript,android,node.js,websocket,ssdp,Javascript,Android,Node.js,Websocket,Ssdp,我经常在谷歌上搜索这个问题,但对于我到底想做什么是可能的还是不可能的,我还是有点困惑 基本上,我正在尝试向我的web应用程序添加一个下拉菜单,其中列出了连接到网络的所有设备。当我说设备时,我并不是说所有的设备;我说的是我正在使用的实现SSDP的某些硬件设备。我已经创建了Node.js程序,可以发送M搜索并成功找到所有设备,但我知道Node.js不是浏览器javascript,我无法在浏览器的终端上显示节点调用的输出(如果我错了,请纠正我) 在对它做了更多的研究之后,我意识到在浏览器上做这种事情的

我经常在谷歌上搜索这个问题,但对于我到底想做什么是可能的还是不可能的,我还是有点困惑

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

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

考虑到我正在努力做的事情,这两种选择中的任何一种都是有用的。我想做的是可能的吗?再一次,我在这个主题上做了研究,但我真的没有找到一个明确的答案。如果可能的话,我真的很感谢与教程的链接,或者只是关于如何完成我正在尝试做的事情的一般想法

我知道我最近在StackOverflow上发布了一些关于这个问题的信息,没有得到任何答案或回复,但我对这个话题做了更多的研究,感觉我确实有了更好的理解。尽管如此,我还是希望能找到一些解决这个问题的方法,因为我在网上还没有找到任何有用的方法


谢谢你抽出时间

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

不幸的是,Chrome应用程序偏向于普通的web应用程序(至少在Chrome操作系统之外),而正如你所发现的,你还不能通过普通的web API实现SSDP。socket API正在开发中,但无法确定它们是否以及何时能够解决允许随机web应用程序执行诸如加入本地多播组之类的操作所固有的安全问题

WebSocket不太可能提供您需要的东西。

这是可能的

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

它们都运行Javascript。在终端中运行nodjs,如果终端不可访问,则将输出传输到文本文件。在这两种情况下,console.log()都应该能够打印出来

对于客户端和服务器端的SSDP,请使用以下命令:


你不需要专门使用Chrome应用程序。您可以在基于Javascript的跨平台框架(如Electron)中编写应用程序。它将成为一款功能齐全的“web”应用程序,适用于个人电脑和手机,您可以使用Cordova等产品。

谢谢您的回答!所以从本质上说,我不可能做我想做的事情,至少在Chrome中是这样的?比如说,在另一款浏览器如Mozilla Firefox中,这是可能的。chrome应用程序也是可能的,只是很快你就无法再在商店中安装新的应用程序,一两年后整个商店都将关闭(chrome OS除外)。在Mozilla中作为一个扩展来实现这一点是可能的,但我猜这也会很棘手:浏览器还不能做到这一点。若你们真的想在浏览器中显示SSDP结果,我认为你们应该制作并运行一个Web服务(一个服务器),将这些信息提供给你们的Web应用。当然,在这一点上,Web应用程序的整个用途是值得怀疑的……太好了,谢谢你提供的信息。我已经在与一个RESTAPI通信,所以也许我可以尝试向该API添加SSDP信息。谢谢