websocket backend added
This commit is contained in:
parent
d7f5eb8a8a
commit
8916d47b12
|
@ -303,7 +303,7 @@
|
||||||
<a class="brand" href="#">aria2 Web-Client</a>
|
<a class="brand" href="#">aria2 Web-Client</a>
|
||||||
<div class="nav-collapse">
|
<div class="nav-collapse">
|
||||||
<ul class="nav">
|
<ul class="nav">
|
||||||
<li class="active"><a href="#">Active Downloads</a></li>
|
<li class="active"><a href="#">All Downloads</a></li>
|
||||||
<!-- <li><a href="#watiting_downloads">Passive Downloads</a></li> -->
|
<!-- <li><a href="#watiting_downloads">Passive Downloads</a></li> -->
|
||||||
<li><a href="#" onclick="custom_aria2_connect()">Connection settings</a></li>
|
<li><a href="#" onclick="custom_aria2_connect()">Connection settings</a></li>
|
||||||
<li><a href="#" onclick="custom_global_settings()">Global settings</a></li>
|
<li><a href="#" onclick="custom_global_settings()">Global settings</a></li>
|
||||||
|
|
68
js/script.js
68
js/script.js
|
@ -6,6 +6,9 @@ var modals = {
|
||||||
global_statistics_modal: undefined,
|
global_statistics_modal: undefined,
|
||||||
download_settings_modal: undefined
|
download_settings_modal: undefined
|
||||||
};
|
};
|
||||||
|
var web_sock = undefined;
|
||||||
|
var web_sock_queue = [];
|
||||||
|
var web_sock_id = 0;
|
||||||
var clear_dialogs = function() {
|
var clear_dialogs = function() {
|
||||||
for(var i in modals) {
|
for(var i in modals) {
|
||||||
modals[i].modal('hide');
|
modals[i].modal('hide');
|
||||||
|
@ -43,7 +46,56 @@ function param_encode(param) {
|
||||||
}
|
}
|
||||||
return param;
|
return param;
|
||||||
}
|
}
|
||||||
var aria_syscall = function(conf, multicall) {
|
|
||||||
|
var web_sock_error = function() {
|
||||||
|
for(var i = 0; i < web_sock_queue.length; i++) {
|
||||||
|
web_sock_queue[i].error();
|
||||||
|
web_sock_queue.splice(i, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var web_sock_message = function(message) {
|
||||||
|
var data = JSON.parse(message.data);
|
||||||
|
for(var i = 0; i < web_sock_queue.length; i++) {
|
||||||
|
if(web_sock_queue[i].id === data.id) {
|
||||||
|
if(data.error) {
|
||||||
|
web_sock_queue[i].error();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
web_sock_queue[i].success(data);
|
||||||
|
}
|
||||||
|
web_sock_queue.splice(i, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var web_sock_send = function(conf, multicall) {
|
||||||
|
var id = 'webui_' + (web_sock_id++).toString();
|
||||||
|
var data = {
|
||||||
|
jsonrpc: 2.0,
|
||||||
|
id: id,
|
||||||
|
method: multicall? conf.func:'aria2.' + conf.func,
|
||||||
|
params: conf.params
|
||||||
|
};
|
||||||
|
web_sock_queue.push({
|
||||||
|
success: conf.success,
|
||||||
|
error: conf.error,
|
||||||
|
id: id
|
||||||
|
});
|
||||||
|
web_sock.send(JSON.stringify(data));
|
||||||
|
}
|
||||||
|
var web_sock_init = function() {
|
||||||
|
var sock = new WebSocket('ws://' + server_conf.host + ':' + server_conf.port + '/jsonrpc');
|
||||||
|
sock.onopen = function() {
|
||||||
|
console.log('websocket connected!!!');
|
||||||
|
web_sock = sock;
|
||||||
|
};
|
||||||
|
sock.onclose = function() {
|
||||||
|
console.log('websocket closed');
|
||||||
|
};
|
||||||
|
sock.onerror = web_sock_error;
|
||||||
|
sock.onmessage = web_sock_message;
|
||||||
|
}
|
||||||
|
|
||||||
|
var jsonp_syscall = function(conf, multicall) {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'http://' + server_conf.host + ':' + server_conf.port + '/jsonrpc',
|
url: 'http://' + server_conf.host + ':' + server_conf.port + '/jsonrpc',
|
||||||
timeout: 1000,
|
timeout: 1000,
|
||||||
|
@ -91,7 +143,13 @@ var aria_syscall = function(conf, multicall) {
|
||||||
dataType: 'jsonp',
|
dataType: 'jsonp',
|
||||||
jsonp: 'jsoncallback'
|
jsonp: 'jsoncallback'
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
var aria_syscall = function(conf, multicall) {
|
||||||
|
if(!web_sock || server_conf.user.length || server_conf.pass.length)
|
||||||
|
jsonp_syscall(conf, multicall);
|
||||||
|
else {
|
||||||
|
web_sock_send(conf, multicall);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
var update_ui = function() {
|
var update_ui = function() {
|
||||||
updateDownloads();
|
updateDownloads();
|
||||||
|
@ -108,6 +166,9 @@ $(function() {
|
||||||
modals.download_settings_modal = $('#download_settings_modal').modal(modal_conf);
|
modals.download_settings_modal = $('#download_settings_modal').modal(modal_conf);
|
||||||
modals.global_statistics_modal = $('#global_statistics_modal').modal(modal_conf);
|
modals.global_statistics_modal = $('#global_statistics_modal').modal(modal_conf);
|
||||||
|
|
||||||
|
if(WebSocket)
|
||||||
|
web_sock_init();
|
||||||
|
|
||||||
update_ui();
|
update_ui();
|
||||||
$('#newDownload').click(function() {
|
$('#newDownload').click(function() {
|
||||||
$('#newDownload_url').val("");
|
$('#newDownload_url').val("");
|
||||||
|
@ -129,6 +190,7 @@ $(function() {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
$('#addNewDownload').click(newDownload);
|
$('#addNewDownload').click(newDownload);
|
||||||
|
setInterval(update_ui, 1000);
|
||||||
});
|
});
|
||||||
function check_global(name) {
|
function check_global(name) {
|
||||||
for(var i = 0; i < global_settings_exclude.length; i++) {
|
for(var i = 0; i < global_settings_exclude.length; i++) {
|
||||||
|
@ -339,6 +401,7 @@ function getTemplateCtx(data) {
|
||||||
}
|
}
|
||||||
function updateDownloadTemplates(elem, ctx) {
|
function updateDownloadTemplates(elem, ctx) {
|
||||||
elem = $(elem);
|
elem = $(elem);
|
||||||
|
elem.children('.hero-unit').remove();
|
||||||
for(var i in ctx) {
|
for(var i in ctx) {
|
||||||
elem.find('.tmp_' + i).text(ctx[i]);
|
elem.find('.tmp_' + i).text(ctx[i]);
|
||||||
}
|
}
|
||||||
|
@ -736,4 +799,3 @@ function custom_global_statistics() {
|
||||||
var tmpl = $('#global_statistics_template').text();
|
var tmpl = $('#global_statistics_template').text();
|
||||||
modals.global_statistics_modal.modal('show');
|
modals.global_statistics_modal.modal('show');
|
||||||
}
|
}
|
||||||
setInterval(update_ui, 1000);
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user