Ich beginne mit meiner ersten Javascript GTK App und ich möchte eine Datei herunterladen und den Fortschritt mit einer Gtk.ProgressBar verfolgen. Die einzigen docs ich über HTTP-Anfragen sind einige Beispiel-Code finden Sie hier:Wie können Sie mithilfe von gjs eine asynchrone HTTP-Anforderung zum Herunterladen einer Datei in Blöcken erstellen?
http://developer.gnome.org/gnome-devel-demos/unstable/weatherGeonames.js.html.en
Und einige verwirrende Suppe Referenz hier:
http://www.roojs.org/seed/gir-1.2-gtk-3.0/gjs/Soup.SessionAsync.html
Von dem, was ich sammeln kann, kann ich etwas tun wie folgt:
const Soup = imports.gi.Soup;
var _httpSession = new Soup.SessionAsync();
Soup.Session.prototype.add_feature.call(_httpSession, new Soup.ProxyResolverDefault());
var request = Soup.Message.new('GET', url);
_httpSession.queue_message(request, function(_httpSession, message) {
print('download is done');
}
Es scheint nur einen Rückruf zu geben, wenn der Download abgeschlossen ist, und ich kann nicht finden Sie eine Möglichkeit, eine Rückruffunktion für Datenereignisse festzulegen. Wie kann ich das machen?
Das ist wirklich einfach in node.js:
var req = http.request(url, function(res){
console.log('download starting');
res.on('data', function(chunk) {
console.log('got a chunk of '+chunk.length+' bytes');
});
});
req.end();