From 0984050df7e761d48e49c2771ef8870cf7bbd405 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 21 Aug 2015 14:10:57 +0530 Subject: [PATCH] [socket] get host using frappe.urllib.get_base_url --- frappe/public/js/frappe/socket.js | 135 ++++++++++++++++-------------- 1 file changed, 73 insertions(+), 62 deletions(-) diff --git a/frappe/public/js/frappe/socket.js b/frappe/public/js/frappe/socket.js index 4084795ae1..2a64d92fa1 100644 --- a/frappe/public/js/frappe/socket.js +++ b/frappe/public/js/frappe/socket.js @@ -1,19 +1,19 @@ frappe.socket = { - open_tasks: {}, + open_tasks: {}, open_docs: [], init: function() { if (frappe.boot.disable_async) { return; } - var socketio_server = frappe.boot.dev_server? '//' + document.domain + ':3000' : '//' + document.domain + ':' + window.location.port; - frappe.socket.socket = io.connect(socketio_server); - frappe.socket.socket.on('msgprint', function(message) { - frappe.msgprint(message) - }); - frappe.socket.setup_listeners(); - frappe.socket.setup_reconnect(); - $(document).on('form-load', function(e, frm) { + frappe.socket.socket = io.connect(frappe.socket.get_host()); + frappe.socket.socket.on('msgprint', function(message) { + frappe.msgprint(message); + }); + + frappe.socket.setup_listeners(); + frappe.socket.setup_reconnect(); + $(document).on('form-load', function(e, frm) { if (frm.is_new()) { return; } @@ -27,22 +27,33 @@ frappe.socket = { } frappe.socket.doc_subscribe(frm.doctype, frm.docname); - }); + }); - // $(document).on('form-unload', function(e, frm) { - // frappe.socket.doc_unsubscribe(frm.doctype, frm.docname); - // }); - }, - subscribe: function(task_id, opts) { - frappe.socket.socket.emit('task_subscribe', task_id); - frappe.socket.socket.emit('progress_subscribe', task_id); + // $(document).on('form-unload', function(e, frm) { + // frappe.socket.doc_unsubscribe(frm.doctype, frm.docname); + // }); + }, + get_host: function() { + var host = frappe.urllib.get_base_url(); + if(frappe.boot.dev_server) { + parts = host.split(":"); + if(parts.length > 2) { + host = parts[0] + ":" + parts[1]; + } + host = host + ":3000"; + } + return host; + }, + subscribe: function(task_id, opts) { + frappe.socket.socket.emit('task_subscribe', task_id); + frappe.socket.socket.emit('progress_subscribe', task_id); - frappe.socket.open_tasks[task_id] = opts; - }, + frappe.socket.open_tasks[task_id] = opts; + }, doc_subscribe: function(doctype, docname) { frappe.socket.socket.emit('doc_subscribe', doctype, docname); frappe.socket.open_docs.push({doctype: doctype, docname: docname}); - }, + }, doc_unsubscribe: function(doctype, docname) { frappe.socket.socket.emit('doc_unsubscribe', doctype, docname); frappe.socket.open_docs = $.filter(frappe.socket.open_docs, function(d) { @@ -52,27 +63,27 @@ frappe.socket = { return d; } }) - }, - setup_listeners: function() { - frappe.socket.socket.on('task_status_change', function(data) { - if(data.status==="Running") { - frappe.socket.process_response(data, "running"); - } else { - // failed or finished - frappe.socket.process_response(data, "callback"); - // delete frappe.socket.open_tasks[data.task_id]; - } - }); - frappe.socket.socket.on('task_progress', function(data) { - frappe.socket.process_response(data, "progress"); - }); - }, - setup_reconnect: function() { - // subscribe again to open_tasks - frappe.socket.socket.on("connect", function() { - $.each(frappe.socket.open_tasks, function(task_id, opts) { - frappe.socket.subscribe(task_id, opts); - }); + }, + setup_listeners: function() { + frappe.socket.socket.on('task_status_change', function(data) { + if(data.status==="Running") { + frappe.socket.process_response(data, "running"); + } else { + // failed or finished + frappe.socket.process_response(data, "callback"); + // delete frappe.socket.open_tasks[data.task_id]; + } + }); + frappe.socket.socket.on('task_progress', function(data) { + frappe.socket.process_response(data, "progress"); + }); + }, + setup_reconnect: function() { + // subscribe again to open_tasks + frappe.socket.socket.on("connect", function() { + $.each(frappe.socket.open_tasks, function(task_id, opts) { + frappe.socket.subscribe(task_id, opts); + }); // re-connect open docs $.each(frappe.socket.open_docs, function(d) { @@ -80,31 +91,31 @@ frappe.socket = { frappe.socket.doc_subscribe(d.doctype, d.name); } }) - }); + }); - }, - process_response: function(data, method) { - if(!data) { - return; - } + }, + process_response: function(data, method) { + if(!data) { + return; + } - // success - if(data) { - var opts = frappe.socket.open_tasks[data.task_id]; - if(opts[method]) opts[method](data); - } + // success + if(data) { + var opts = frappe.socket.open_tasks[data.task_id]; + if(opts[method]) opts[method](data); + } - // always - frappe.request.cleanup(opts, data); - if(opts.always) { - opts.always(data); - } + // always + frappe.request.cleanup(opts, data); + if(opts.always) { + opts.always(data); + } - // error - if(data.status_code && data.status_code > 400 && opts.error) { - opts.error(data); - } - } + // error + if(data.status_code && data.status_code > 400 && opts.error) { + opts.error(data); + } + } } $(frappe.socket.init);