【问题标题】:How to ping an IP address from a VueJS application?如何从 VueJS 应用程序 ping IP 地址?
【发布时间】:2021-05-21 13:11:18
【问题描述】:

在 VueJS 应用程序上工作,我想创建一个 ping 特定 IP 地址并返回时间和状态的函数。

1- 我使用了ping-lite,但出现此错误:Could not detect your ping binary.。 我在节点模块中看到他们正在检查机器操作系统(在 Windows 和 WSL 上运行)并在失败时抛出该错误。

2- 然后我尝试了ping 并收到此错误:

(Promise/async): "TypeError: net.isIPv6 is not a function"

我试图从他们的 npm/github 页面执行示例代码:

var ping = require('ping');
    
var hosts = ['192.168.1.1', 'google.com', 'yahoo.com'];
    
for(let host of hosts){
       let res = await ping.promise.probe(host);
       console.log(res);
   }

我想知道这些问题是否相关,是否与我的环境/机器有关。

如何解决这个问题或者从 Vue 应用 ping IP 地址的最佳方法是什么?

【问题讨论】:

    标签: javascript node.js vue.js ping


    【解决方案1】:

    Ping 是浏览器不支持的 node.js 模块。该模块需要在服务器端运行。

    这可以通过我们 axios 来完成,您可以在其中对 url 发出 GET 调用,如果您得到 200 返回,则表明调用成功。这也可以使用 $ajax 来完成。

    axios 示例

    const response = await axios.get('https://api.github.com/users/mapbox');
    
    if (response.status === 200) {
      console.log('success'
    }
    

    【讨论】:

    • 感谢您的回复。即使它有效,我仍然会收到 CORS 错误,并且会影响响应时间。你知道如何解决这个问题吗?
    • CORS 如您所知,如果一个来源调用另一个来源的结果。 CORS 需要在服务器端解析,以授予请求方对 api/domain 的访问权限。由于它内置安全性,因此没有浏览器绕过。如果您在本地测试 localhost:3000 ,则需要将源添加到服务器 Access-Control-Allow-Cross-Origin:localhost:3000 取决于您的托管方式,另一个选项是构建自己的代理来处理这些请求.如果您在调用随机站点时遇到 CORS 错误,除非您使用某些信任 (OAuth) 提供程序,否则无法解决此问题
    猜你喜欢
    • 2011-06-24
    • 2013-09-08
    • 2012-07-15
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 2013-06-14
    • 1970-01-01
    相关资源
    最近更新 更多