Добрый день!
Сразу скажу, что я новичок в JS (раньше писал на других языках).
У меня стояла задача - написать код для расширения Гугл Хром, который бы проверял открыт ли порт на определенном IP адресе.
Я порыскал по инету и нашел несколько семплов, которые объединил в один. Код работает - если по указаному IP открыт определенный порт, то вы полняется функция оповещения об этом.
Но, навярняка этот код можно существенно сократить -
думаю, можно уместиться всего в несколько строк.
Подскажите, пожалуйста, изящное решение.
Код:
setInterval(ping, 600000);
function ping(){
var h = "XXX.XXX.XXX.XXX";
var p = XXX;
var t = 100;
var req = new pingrequest(h,p,t);
req.dorequest();
return;
}
function notify()
{
var opt = {type: "basic",title:"Server is running!",message: "Runing!",iconUrl: "start.png"};
chrome.notifications.create("", opt, function(notificationId)
{
setTimeout(function()
{
chrome.notifications.clear(notificationId, function(wasCleared) { console.log(wasCleared); });
}, 3000);
});
chrome.browserAction.setIcon({path:"on.png" });
}
ping();
function pingrequest( host, port, timeout){
var src ;
var h = host;
var p = port;
var timeout = 100;
var id = String(Math.floor(Math.random()*10000000000));
this.getid = function() { return id };
this.getip = function() { return h };
this.getport = function() { return p };
this.dorequest = function()
{
var img = new Image();
img.onerror = function ()
{
if (!img) return;
img = undefined;
notify();
};
img.onload = img.onerror;
src = 'http://' + host + ':' + port + '/' + this.getid() + '.jpg';
img.src = src;
setTimeout(function ()
{
if (!img) return;
img = undefined;
chrome.browserAction.setIcon({path:"off.png"});
}, timeout);
};
}