【问题标题】:Is it possible for Nodejs to read the system logs of a connected device via a web application?Nodejs 是否可以通过 Web 应用程序读取连接设备的系统日志?
【发布时间】:2018-04-18 21:11:45
【问题描述】:

我正在寻找一种通过 Web 应用程序读取连接设备的系统日志的方法。基本上,我希望用户能够连接他们的 iphone、android、平板电脑等,并能够在 system/consoleLog 级别查看他们设备上发生的情况。类似于 adb logcat。这将是通过 Web 应用程序,而不是在本地安装的软件上。使用 react/nodejs 是否可行?我应该考虑使用哪些技术?

【问题讨论】:

    标签: android ios node.js reactjs adb


    【解决方案1】:

    实现这一点需要几个组件。

    后台

    • 文件监控(本机 Node.js fs.watch
    • 实时更新(Socket.io)

    前端

    • 任何您喜欢的框架,我都在使用带有 socket.io 客户端的 React.js

    【讨论】:

    • 感谢您的回复!我已经在使用 socket.io 并对这个项目做出反应,所以我很高兴这些是你推荐的选项。我很好奇 fs.watch 如何访问设备级事件?设备是否必须写入文件并且 nodeJS 会监视该文件?
    【解决方案2】:

    您尝试做的事情是可能的,但在非常有限的意义上。

    您的用户将需要手动将他们的日志文件上传到您的网络应用程序。

    您可以通过在 javascript 中使用 FileReader api 来“要求”他们这样做。这是demo page

    如您所见,您必须手动选择要上传的文件并提供网站。以编程方式设置日志文件的路径并尝试在用户不注意的情况下调用它是不可能的。

    这样做的原因是您通过网络应用程序提供的任何内容都将在用户浏览器的沙箱中运行。

    出于明显的安全原因,浏览器不会让随机网站在未经明确许可的情况下读取/写入个人手机的本地文件。

    Node.js 在这里帮不了您,因为要使用 Node.js 的功能(例如访问本地系统文件),必须在本地安装应用程序,而不是在“浏览器沙箱”中运行。

    我希望这会有所帮助。如果您想要更多文件阅读器 api 的示例,请告诉我,我可以为您编写一些内容。

    【讨论】:

    • 非常感谢您的回复。我希望让用户能够在他们的设备上近乎实时地看到正在发生的事情,并过滤掉与他们相关的特定数据。根据您的回复,我猜这可能是不可能的,因为他们需要上传已经完成的日志文件?再次感谢!
    • 是的,您正在尝试做的事情会更适合本机应用程序。但是,如果您同意用户在每次打开您的网站时授予对日志文件的访问权限,您可以读取该文件 100 次,而无需再次请求许可,直到他们关闭您的网站。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 2020-02-18
    • 2016-05-21
    • 2011-01-26
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多