【问题标题】:How do I broadcast messages within a network with Javascript?如何使用 Javascript 在网络内广播消息?
【发布时间】:2015-04-08 08:56:36
【问题描述】:

这个问题是不言自明的。我想从网页自动检测本地网络中的服务器软件。我可以使用 node 发送和接收广播,但要使其正常工作,我需要能够使用浏览器内的 javascript 发送或接收广播,然后直接连接到我的服务器。

有人知道怎么做吗?有没有它的图书馆,还是我不走运?

【问题讨论】:

  • This 可能会对您有所帮助。
  • 我不想要我自己的 IP 地址 - 我想要服务器所在机器的 IP 地址。为此,我认为我需要发送和接收广播消息。
  • 您需要知道您的本地 IP,以便计算您所在的子网,然后继续扫描您的服务器。
  • 我可以使用广播地址 255.255.255.255 将它发送到我子网上的所有东西。我也可以按照你的方式做,但是能够广播会更干净(我更愿意)。您的方式要求我不断扫描可能包含数千台主机的子网,直到找到我的服务器。
  • JavaScript 无法完全访问您的网络,因此无法进行广播。唯一真正从浏览器访问您的网络是通过 webRTC 完成的,而这一切都可以找到您的本地 IP。

标签: javascript node.js broadcast


【解决方案1】:

我衷心建议您查看coreos/etcdhashicorp/consul 或其他一些服务发现解决方案,这些解决方案公开了有关您的服务位置的 HTTP 接口和 JSON 数据。

由于您无法从浏览器访问底层网络设备(想象一下,如果我可以从我的外部位置开始探测 SO 的内部网络),可以说,设置所需的时间与编写适当的节点所需的时间一样多.js 应用程序来发现您网络上的资源并通过 JSON 向您的客户端公开这些资源,但是使用适当的服务发现解决方案意味着您可以将其用于任何类型的网络配置,您的应用程序可能会在他们可能发现的任何情况下运行在明天自己在运行时(光纤电缆在两个中心之间被切断,硬物掉下来破坏了交换机,垄断了所有网络带宽,服务的 IP 地址间歇性变化等)。

【讨论】:

  • 感谢您的提示,但是通过 etcd 和 google 浏览后,似乎没有一个服务发现工具可以使用纯 javascript(即通过 html)。但是,在我的搜索中,我确实发现 Chrome 有一个用于 udp 套接字的 api,这正是我想要的。目前它只适用于 Chrome,但至少它是这样的。
  • 再看一遍,API 仅适用于打包的应用程序,因此仍然不符合我的需求。哦,好吧。
  • etcd 为服务和客户端公开了一个 HTTP 服务器,尽管它们默认运行在 non-standard HTTP port 上(即不在端口 80 上)。这是一个 Node.js 应用程序,它公开了一个 Web UI、interfacing directly 以及 etcd 服务器和管道客户端请求(例如,如果您需要浏览器从外部网络访问 etcd)。
  • 我不确定这就是我需要的。我需要一个具有未知 ip 地址的客户端来查找我的节点服务器,该节点服务器位于同一子网上,也具有未知的 ip 地址(反之亦然)。有了这个,我很确定你仍然需要事先知道服务器的地址,但我不知道。
  • 这个想法是,您的etcd 服务器可以从公共 IP 外部访问,它通过购买的 URL 向公共发现服务注册,即discovery.etcd.io/4dad70723cf5ac6d838b890b4967fd3b。然后,您的服务可以在etcd 服务器上注册并存储它的 IP 地址和其他必要的详细信息。然后客户端可以从etcd服务器读取并获取服务的IP地址,这样服务和客户端就可以发现彼此。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-24
  • 2011-09-27
  • 2010-11-20
  • 2010-10-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多