簡體   English   中英

使用Javascript通過最快的ping時間對服務器列表進行排序

[英]Sort a list of servers by fastest ping time with Javascript

在我的Electron應用程序中,我有一個服務器地址列表,我需要按照最短的響應時間對其進行排序。 我有一個需要排序列表的函數:

function start() {
    // first step, get list of servers
    var servers_sorted = get_sorted_list_of_servers();

    // rest of function
}

然后,我有一個遍歷服務器列表的函數:

function get_sorted_list_of_servers() {
    // access unsorted list from file

    unsorted_servers.forEach((server) => {
        // Get ping times for each server
        // Here is where I am stuck
    });

    // Sort based on ping times....

    return sorted_list_of_servers;
}

問題是我不確定如何獲取每個服務器的ping時間。 我發現了幾個包裝ping實用程序的庫( net-pingping )。 但是,它們使用回調(考慮到對服務器執行ping操作可能需要一分鍾,因此這很有意義),我需要某種方式來獲取服務器時間列表。

// From ping example code
unsorted_servers.forEach(function (server) {
    ping.promise.probe(host).then(function (res) {
        console.log(res);
        // Update a global variable here??
    });
});

我曾考慮過讓回調更新全局列表,但是一旦所有服務器都經過測試,我就需要發出某種信號。

任何指導表示贊賞。 謝謝!

您可以使用Promise.allmap以遍歷服務器列表,並等待所有Promises解決。 這是使用ping的簡單示例:

 const sortBy = require('lodash.sortby'); const ping = require('ping'); const servers = ['google.com', 'facebook.com', 'amazon.com', 'apple.com']; Promise.all(servers.map(server => ping.promise.probe(server))).then(response => { console.log(sortBy(response, 'time')) }); 

這是一個使用Promise.all並呈現結果的React演示:

https://server-ping-fuupenayzp.now.sh/

和來源

https://zeit.co/rusty-dev/server-ping/fuupenayzp/source?f=src/App.js

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM