2015-12-04 3 views
2

Я использую электрон для отображения некоторых веб-страниц. Ниже мое кодирование:Повторная загрузка веб-страницы при сбое в электроне

var app = require('app'); 
var ipc = require('ipc'); 
var BrowserWindow = require('browser-window'); 
var settings = require('./settings'); 

var mainWindow = null; 

app.on('window-all-closed', function() { 
    if (process.platform != 'darwin') { 
    app.quit(); 
    } 
}); 

app.on('ready', function(){ 
    var mainWindow = new BrowserWindow({ 
     fullscreen: true, 
     autoHideMenuBar: true 
    }) 

    mainWindow.loadUrl('file://' + __dirname + '/index.html') // FIRST WEBPAGE 

    mainWindow.on('closed', function() { 
    mainWindow = null; 
    }); 

ipc.on('redirect', function(){ 
    mainWindow.loadUrl('http://192.168.1.10/page2') // SECOND WEBPAGE 

    mainWindow.webContents.on("did-fail-load", function() { 
     console.log("did-fail-load"); 

     mainWindow.loadUrl('file://' + __dirname + '/index.html'); 
// REDIRECT TO FIRST WEBPAGE AGAIN 
    }); 

}); 

Это первое войдет в первую веб-страницу, то после того, как он получил команду «перенаправление» с помощью JavaScript Ipc модуля, он будет перенаправлять на вторую страницу. Но мне нужно проверить, можно ли подключить вторую веб-страницу. Если он не может быть подключен (с ошибкой), он снова перейдет на первую веб-страницу. И циклы продолжаются.

Я использую console.log («did-fail-load»), чтобы проверить, не удалось ли подключиться ко второй странице. Но я узнал, что он дублировал звонок. В первый раз, когда он не подключается к второй веб-странице, есть один console.log («did-fail-load»), когда он повторяет второй раз, появляется два console.log («did-fail-load») , и в третий раз, когда он повторит попытку, появляется три console.log («did-fail-load»). Это то, что некоторые из них получили дублированные вызовы на mainWindow?

Каков наилучший способ повторить загрузку веб-страницы, когда она не сработала в электроне?

ответ

1

Вы должны задать себе вопрос: «Почему загрузка не прошла?» и «Будет ли он загружаться сейчас?»

Почему определяет лучший способ проверки загрузки вашей веб-страницы. Когда вы проверяете URL/сервер перед загрузкой, убедитесь, что его можно загрузить. Тогда это не будет необходимость перезагрузки.

Из вашего кода я бы предположил, что вы хотите проверить, работает ли сервер внутри вашей сети. Для этого можно использовать модуль узла узла-Net-пинг https://github.com/stephenwvickers/node-net-ping

Установите модуль через НПМ внутри вашего приложения:

npm install node-net-ping --save 

Загрузите модуль сверху через потребуется:

var ping = require ("net-ping"); 

Проверьте, имеется ли сервер:

var session = ping.createSession(); 

session.pingHost ('192.168.1.10', function (error, target) { 
    if (!error) 
     // Load second page 
}); 

Другое, может быть, лучшее решение - проверить запрос перед загрузкой URL-адреса. Это также делается с узловой частью электрона. Ответ копируется здесь: Node.js - How to check status of a URL within a http request

var = request = require('request'); 
request('http://www.google.com', function (error, response, body) { 
    if (!error && response.statusCode == 200) { 
     console.log("URL is OK") 
     // Load second page 
    } 

В зависимости от ответа на «Почему нагрузка не получится?» вы должны создать чек.

Смежные вопросы