【问题标题】:Wake on lan from a browser via javascript通过 javascript 从浏览器唤醒局域网
【发布时间】:2016-05-27 19:42:04
【问题描述】:

是否可以通过浏览器向本地网络上的计算机发送 LAN 唤醒命令(无服务器端代码)。 我完全控制了网络。 我想通过 wifi 从平板电脑上运行的浏览器到同一 LAN 上的有线计算机。 我找到了一些 Node.JS JavaScript 代码:https://github.com/agnat/node_wake_on_lan/blob/master/wake_on_lan.js 但我不知道它是否可以在浏览器上运行。

【问题讨论】:

    标签: javascript google-chrome-extension lan wake-on-lan browser-security


    【解决方案1】:

    Nodejs 专门用于编写服务器端代码。如果没有服务器,您将无法做到这一点。但是,您可以购买一台像树莓派这样的小型计算机作为您的服务器。

    你必须:

    • 买一台简单的小电脑,比如树莓派或类似的东西。(不过这台电脑需要一直打开)
    • 在上面安装节点。
    • 为 raspberry 编写一些 javascript 以获取来自 Internet 的命令(如浏览器扩展),然后将本地“魔术包”发送到您要唤醒的计算机。
    • 然后制作一个客户端程序。像浏览器扩展程序或可以将 http 内容发送到您的服务器(树莓派)的 android 应用程序。

    要编写服务器代码,您可以使用https://www.npmjs.com/package/node-wol,它是一个节点库。

    【讨论】:

      【解决方案2】:

      您需要在系统调用和您的 Javascript 之间建立某种形式的接口,以发送“魔术包”。在我看来,如果没有某种形式的能够使用系统调用的后端巫术,您将无法做到这一点。以我的经验,Javascript 仅限于在客户端执行操作,并且能够与服务器端对话,但不能控制。

      但话说回来,我不是网络开发人员。我有限的网络经验告诉我,你需要一些东西来与你的操作系统对话,最终会发送 WoL 魔法数据包。

      【讨论】:

        【解决方案3】:

        不,你不能。

        WoL 需要向局域网发送一个 UDP 广播包。但是浏览器不会为 UDP 包公开任何 API。

        您需要服务器端编码或浏览器插件。您可以编写自己的插件,使用udp api

        【讨论】:

        • 有没有办法突破浏览器的沙箱并运行可执行文件?
        • @Type955 您可能必须让用户为其安装浏览器扩展程序。在 Windows 上,您也许可以使用 Active X 来完成。
        • @Type955 是的,它叫做Native Messaging。但是,您说的是“在平板电脑上运行”,这取决于您对平板电脑的定义,可能根本不支持扩展。
        【解决方案4】:

        Node 是基于服务器端的,虽然它使用 Javascript 运行时环境,但它不会让你运行你没有权限的东西。

        ZuLukas 说的很对。你不能用纯 JavaScript 代码做到这一点。 你可能会在这里找到一些东西: https://github.com/hypery2k/cordova-wol-plugin 我敢打赌,这将是您最好的尝试。

        您需要学习 PhoneGap,然后构建一个 Hybrid 应用程序。 但是,请注意:JavaScript 无法做到这一点。尽管您将编写 javascript 代码来执行此操作,但它会调用本机资源,并且不会在浏览器环境中运行

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多