From b9523dfa65d8e17e0e63d54e57fb8ea58dd31bf0 Mon Sep 17 00:00:00 2001 From: coderaiser Date: Fri, 30 May 2014 11:02:39 -0400 Subject: [PATCH] feature(socket) add cdn --- lib/client/socket.js | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/lib/client/socket.js b/lib/client/socket.js index f99ccca8..3edec66e 100644 --- a/lib/client/socket.js +++ b/lib/client/socket.js @@ -10,6 +10,8 @@ var CloudCmd, Util, DOM, CloudFunc, io; var Socket = Util.exec.bind(Util), AllListeners = {}, socket, + exec = Util.exec, + log = Util.log.bind(Util), CONNECTED = 'socket connected\n', DISCONNECTED = 'socket disconnected\n', @@ -26,15 +28,26 @@ var CloudCmd, Util, DOM, CloudFunc, io; Socket.CONNECTED = CONNECTED; Socket.DISCONNECTED = DISCONNECTED; - function init(callback) { - DOM.load.js('/socket.io/socket.io.js', { - onerror : Util.log.bind(Util, ERROR_MSG), - onload : function() { - Util.exec(callback); + function init(callback, isLocal) { + var urlLocal = '/socket.io/socket.io.js', + urlCDN = 'https://cdn.socket.io/socket.io-1.0.0.js', + url = isLocal ? urlLocal : urlCDN, + + onerror = function() { + log(ERROR_MSG); + init(callback, true); + }, + + onload = function() { + exec(callback); if (!socket) connect(); - } + }; + + DOM.load.js(url, { + onerror : exec.with(onerror, callback), + onload : exec.with(onload, callback) }); } @@ -78,17 +91,17 @@ var CloudCmd, Util, DOM, CloudFunc, io; }); socket.on('connect', function () { - Util.log(CONNECTED); + log(CONNECTED); }); setListeners(AllListeners, socket); socket.on('disconnect', function () { - Util.log(DISCONNECTED); + log(DISCONNECTED); }); socket.on('reconnect_failed', function () { - Util.log('Could not reconnect. Reload page.'); + log('Could not reconnect. Reload page.'); }); }