gamelet-cli
Version:
Download project from code.gamelet.com, edit/test in vscode and sync back to server.
80 lines (69 loc) • 2.44 kB
JavaScript
(function (global) {
let socket = null;
function connect() {
if(socket) {
socket.open();
} else {
socket = io('/monitor', { forceNew: true });
socket.on('connect', () => {
log('socket connected', '');
socket.emit('login', 'localServerMonitor', res => {
if(res.error) {
logError('Failed to login', res.error);
} else {
log('Login successfully', res.data, 'black');
}
});
})
socket.on('disconnect', () => {
logError('socket disconnected', '');
})
socket.on('error', function (error) {
logError('socket error', error);
});
socket.on('connect_error', function (error) {
logError('socket connect_error', error);
});
socket.on('connect_timeout', function (error) {
logError('socket connect_timeout', error);
});
let msgProccessor = {
on_monitorLog: (clientCode, channel, prefix, data, color) => {
log(prefix, JSON.stringify(data), color);
},
}
socket.on('gltmsg', function (type, params) {
msgProccessor['on_' + type].apply(msgProccessor, params);
});
}
}
connect();
function clientApi(projectCode, api, params) {
return new Promise((resolve, reject) => {
socket.emit('clientMonitorApi', projectCode, api, params, res => {
if(res.error) {
logError(projectCode + '.' + api, res.error);
reject(res.error);
} else {
resolve(res.data);
}
});
})
}
function log(prefix, msg, color) {
color = color || 'black';
$('#messages').prepend($('<li>').html(`<span style="color:${color}"><b>[${prefix}]</b> ${msg}</span>`));
}
function logError(prefix, error) {
log(prefix, error, 'red');
}
//
global.clearMessages = function() {
$('#messages').empty();
}
global.test = function() {
clientApi('', 'test', {}).then(res => {
console.log(res);
});
}
})(window);