JavaScript中的Bonjour发现?也许吗?

23

这可能是个不太现实的想法,我先声明一下。

能否只用Javascript来发现Bonjour广告的HTTP服务?

为什么这很有用呢?假设一个本地服务管理着某些数据(例如你当前的经纬度),这些数据通过webservice公开并由Bonjour Zeroconf进行广告推送。远程网站可能想知道你当前的经纬度,而不必知道你正在运行的是MyGPSserverVersion2,该网站可以使用Javascript在本地Bonjour中搜索_Compatible_location_services._tcp,一旦找到IP地址就可以继续执行。

如果这是不可能的(我认为这可能是情况),那么主要障碍是什么?是否有任何想法来克服这些障碍?

5个回答

8
简单回答是不行(至少在Linux平台上不行)。
有趣的是你问到了这个问题:我一直在努力让web浏览器实现这种功能。其中一个成功的例子就是我为Chrome开发的NPAPI mDNS插件。该插件主要与Avahi ZeroConf(mDNS - 多播DNS服务器)进行交互。
我目前正在开发另一个桥梁来弥合这个差距:一个“轻量级”数据库(类似CouchDb),用于注册桌面应用程序的HTTP终端点。扩展程序将从Javascript中读取这些终端点,并能够直接与广告服务进行交互。 更新:通过W3C服务发现,有希望实现。

听起来这可能非常有用!你能被说服正式化这项服务吗?我想我可以编写一个外部的 Ruby 应用程序,在 Mac OS 上提供相同的服务 - 这将是额外的负担,但它将可用于所有浏览器。 - JP.
1
W3C服务发现已经没有希望了: 该文档的工作已经停止,不应引用或用作实施基础。演示API和远程播放API解决了此API试图解决的一部分用例。 该用例子集不包括服务发现。 - rakensi

5
这似乎可以使用Chrome的Sockets API实现,但我只是粗略地看了一下。 mdns-browser似乎使用上述API实现了此功能。

1
套接字API仅暴露给运行在Chrome应用程序中的代码,而不是运行在浏览器中的JS代码。 - Yan Foto
1
请注意,谷歌已经弃用了Chrome应用程序:https://blog.chromium.org/2016/08/from-chrome-apps-to-web.html - Petrus Theron
mans-browser的代码现在已经迁移到https://github.com/GoogleChrome/chrome-extensions-samples/tree/master/apps/samples/mdns-browser。 - Timo Schilling

0

我看了一下,它仍然使用一些 Objective-C 将 iOS Bonjour 函数暴露给 Javascript。 - parsley72

0

我知道这是一个旧的帖子。 发现了这个 GitHub 项目,它允许您使用 mDNS 发现(和发布)服务 - https://github.com/watson/bonjour

这是一个纯 JavaScript 实现的 Bonjour/Zeroconf 协议。可以在本地网络上发布服务或使用多播 DNS 发现现有服务。


2
该库不支持浏览器:https://github.com/watson/bonjour/issues/33 - Miquel

0
这是watson/bonjour JavaScript代码的现代分支。这个版本是用TypeScript编写的。

https://github.com/onlxltd/bonjour-service

当然,这只适用于命令行 Node 应用程序,而不是网页。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接