mirror of
https://github.com/coderaiser/cloudcmd.git
synced 2026-01-23 02:35:49 +00:00
refactor(socket) incapsulate
This commit is contained in:
parent
714647d3a5
commit
e2caa26256
4 changed files with 141 additions and 71 deletions
|
|
@ -5,6 +5,7 @@
|
|||
"help",
|
||||
"config",
|
||||
"contact",
|
||||
"socket",
|
||||
"console", {
|
||||
"name": "storage",
|
||||
"data": [{
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ var CloudCmd, Util, DOM, CloudFunc, $;
|
|||
|
||||
function ConsoleProto(CallBack) {
|
||||
var Name = 'Console',
|
||||
Messages= [],
|
||||
Loading,
|
||||
jqconsole,
|
||||
Element,
|
||||
|
|
@ -24,15 +25,16 @@ var CloudCmd, Util, DOM, CloudFunc, $;
|
|||
Loading = true;
|
||||
|
||||
Util.loadOnLoad([
|
||||
addListeners,
|
||||
CloudCmd.Socket,
|
||||
Console.show,
|
||||
load,
|
||||
CloudCmd.View,
|
||||
DOM.jqueryLoad,
|
||||
DOM.socketLoad
|
||||
]);
|
||||
}
|
||||
|
||||
this.show = function() {
|
||||
this.show = function(callback) {
|
||||
if (!Loading) {
|
||||
Images.showLoad({top:true});
|
||||
|
||||
|
|
@ -95,6 +97,8 @@ var CloudCmd, Util, DOM, CloudFunc, $;
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
Util.exec(callback);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
|
@ -144,6 +148,60 @@ var CloudCmd, Util, DOM, CloudFunc, $;
|
|||
});
|
||||
}
|
||||
|
||||
function addListeners(callback) {
|
||||
CloudCmd.Socket.on('message', function(msg) {
|
||||
var parsed = Util.parseJSON(msg);
|
||||
|
||||
outToTerminal(parsed);
|
||||
});
|
||||
|
||||
Util.exec(callback);
|
||||
}
|
||||
|
||||
function outToTerminal(pMsg) {
|
||||
var i, n, lResult, lStdout, lStderr,
|
||||
lConsole = CloudCmd.Console;
|
||||
|
||||
DOM.Images.hideLoad();
|
||||
|
||||
if (Util.isObject(lConsole)) {
|
||||
if (Messages.length) {
|
||||
/* show oll msg from buffer */
|
||||
for (i = 0, n = Messages.length; i < n; i++) {
|
||||
lStdout = Messages[i].stdout;
|
||||
lStderr = Messages[i].stderr;
|
||||
|
||||
if (lStdout)
|
||||
lConsole.log(lStdout);
|
||||
|
||||
if (lStderr) {
|
||||
/* if it's object - convert is to string' */
|
||||
if (Util.isObject(lStderr))
|
||||
lStderr = Util.stringifyJSON(lStderr);
|
||||
|
||||
lConsole.error(lStderr);
|
||||
}
|
||||
}
|
||||
Messages = [];
|
||||
}
|
||||
|
||||
lStdout = pMsg.stdout;
|
||||
lStderr = pMsg.stderr;
|
||||
|
||||
if (lStdout)
|
||||
lResult = lConsole.log(lStdout);
|
||||
|
||||
if (lStderr)
|
||||
lResult = lConsole.error(lStderr);
|
||||
}
|
||||
else
|
||||
Messages.push(pMsg);
|
||||
|
||||
Util.log(pMsg);
|
||||
|
||||
return lResult;
|
||||
}
|
||||
|
||||
init();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -699,14 +699,6 @@ var CloudCmd, Util, DOM, CloudFunc, Dialog;
|
|||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* load socket.io
|
||||
* @param pCallBack
|
||||
*/
|
||||
this.socketLoad = function(pCallBack) {
|
||||
DOM.jsload('/lib/client/socket.js', pCallBack);
|
||||
};
|
||||
|
||||
/**
|
||||
* create new folder
|
||||
*
|
||||
|
|
|
|||
|
|
@ -4,20 +4,85 @@ var CloudCmd, Util, DOM, io;
|
|||
(function(CloudCmd, Util, DOM) {
|
||||
'use strict';
|
||||
|
||||
CloudCmd.Socket = new SocketProto(CloudCmd, Util, DOM);
|
||||
CloudCmd.Socket = SocketProto;
|
||||
|
||||
function SocketProto(CloudCmd, Util, DOM) {
|
||||
var Messages = [],
|
||||
function SocketProto(callback) {
|
||||
var Socket = function () {
|
||||
Util.exec.apply(null, arguments);
|
||||
},
|
||||
AllListeners = {},
|
||||
socket,
|
||||
Terminal,
|
||||
|
||||
ERROR_MSG = 'could not connect to socket.io\n'+
|
||||
'npm i socket.io';
|
||||
|
||||
DOM.jsload('/socket.io/lib/socket.io.js', {
|
||||
onerror : Util.retFunc(Util.log, ERROR_MSG),
|
||||
onload : connect
|
||||
});
|
||||
Socket.on = addListener;
|
||||
Socket.addListener = addListener;
|
||||
Socket.removeListener = removeListener;
|
||||
Socket.send = send;
|
||||
|
||||
function init(callback) {
|
||||
DOM.jsload('/socket.io/lib/socket.io.js', {
|
||||
onerror : Util.retFunc(Util.log, ERROR_MSG),
|
||||
onload : function() {
|
||||
Util.exec(callback);
|
||||
|
||||
if (!socket)
|
||||
connect();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function addListener(name, func) {
|
||||
var listeners = AllListeners[name];
|
||||
|
||||
if (!listeners)
|
||||
listeners = AllListeners[name] = [];
|
||||
|
||||
listeners.push(func);
|
||||
|
||||
if (func && socket)
|
||||
socket.on(name, func);
|
||||
}
|
||||
|
||||
function removeListener(name, func) {
|
||||
var i, n, listeners;
|
||||
|
||||
if (socket)
|
||||
socket.removeListener(name, func);
|
||||
|
||||
listeners = AllListeners[name];
|
||||
|
||||
if (listeners) {
|
||||
n = listeners.length;
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
if (listeners[i] === func)
|
||||
listeners[i] = null;
|
||||
}
|
||||
}
|
||||
|
||||
function send(data) {
|
||||
if (socket)
|
||||
socket.send(data);
|
||||
}
|
||||
|
||||
function setListeners(all, socket) {
|
||||
var i, n, name, func, listeners;
|
||||
|
||||
for (name in all) {
|
||||
listeners = all[name];
|
||||
n = listeners.length;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
func = listeners[i];
|
||||
|
||||
if (func && socket)
|
||||
socket.on(name, func);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function connect() {
|
||||
var FIVE_SECONDS = 5000;
|
||||
|
|
@ -27,70 +92,24 @@ var CloudCmd, Util, DOM, io;
|
|||
'reconnection limit' : FIVE_SECONDS
|
||||
});
|
||||
|
||||
CloudCmd.Socket = socket;
|
||||
|
||||
socket.on('connect', function () {
|
||||
outToTerminal({stdout: 'socket connected\n'});
|
||||
Util.log('socket connected\n');
|
||||
});
|
||||
|
||||
socket.on('message', function (msg) {
|
||||
var lMsg = Util.parseJSON(msg);
|
||||
|
||||
outToTerminal(lMsg);
|
||||
});
|
||||
setListeners(AllListeners, socket);
|
||||
|
||||
socket.on('disconnect', function () {
|
||||
outToTerminal({stderr: 'socket disconected\n'});
|
||||
Util.log('socket disconected\n');
|
||||
});
|
||||
|
||||
socket.on('reconnect_failed', function () {
|
||||
Util.log('Could not reconnect. Reload page.');
|
||||
});
|
||||
}
|
||||
|
||||
function outToTerminal(pMsg) {
|
||||
var i, n, lResult, lStdout, lStderr,
|
||||
lConsole = CloudCmd.Console;
|
||||
|
||||
DOM.Images.hideLoad();
|
||||
|
||||
if (Util.isObject(lConsole)) {
|
||||
if (Messages.length) {
|
||||
/* show oll msg from buffer */
|
||||
for (i = 0, n = Messages.length; i < n; i++) {
|
||||
lStdout = Messages[i].stdout;
|
||||
lStderr = Messages[i].stderr;
|
||||
|
||||
if (lStdout)
|
||||
lConsole.log(lStdout);
|
||||
|
||||
if (lStderr) {
|
||||
/* if it's object - convert is to string' */
|
||||
if (Util.isObject(lStderr))
|
||||
lStderr = Util.stringifyJSON(lStderr);
|
||||
|
||||
lConsole.error(lStderr);
|
||||
}
|
||||
}
|
||||
Messages = [];
|
||||
}
|
||||
|
||||
lStdout = pMsg.stdout;
|
||||
lStderr = pMsg.stderr;
|
||||
|
||||
if (lStdout)
|
||||
lResult = lConsole.log(lStdout);
|
||||
|
||||
if (lStderr)
|
||||
lResult = lConsole.error(lStderr);
|
||||
}
|
||||
else
|
||||
Messages.push(pMsg);
|
||||
|
||||
Util.log(pMsg);
|
||||
|
||||
return lResult;
|
||||
}
|
||||
|
||||
init(callback);
|
||||
|
||||
return Socket;
|
||||
}
|
||||
|
||||
})(CloudCmd, Util, DOM);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue