var redis = function(callback){ // Если функция обратной связи существует if(gx.isFunction(callback)){ // Подключаемся к модулю редиса var redis = require("redis"); // Подключаемся к сокету var client = (/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/ .test(gx.config.redis.host) ? redis.createClient(gx.config.redis.port, gx.config.redis.host) : redis.createClient(gx.config.redis.host)); // Авторизуемся в редис client.auth(gx.config.redis.password, function(){ // Выбираем базу данных client.select(gx.config.redis.db, function(){ // Выполняем функцию обратного вызова callback.call(client); }); }); // Устанавливаем событие на получение ошибки client.on("error", function(err){ // Выводим в консоль данные if(gx.isset(gx.config.debug.errors)) console.error('Ошибка Redis', err); }); } };
client.on('data', function(chunk){ // Собираем данные из чанкояв data += chunk; // Если все данные пришли тогда отсылаем результат if(!gx.isset(client.bufferSize)){ try { // Останавливаем прием данных client.pause(); // Перекодируем данные data = JSON.parse(data); // Если функция обратного вызова существует тогда выводим результат if(gx.isFunction(callback)) callback.call($, data); // Если происходит ошибка тогда завершаем работу // Закрываем соденинение } catch(e) { // Выводим в консоль данные if(gx.isset(gx.config.debug.errors)) console.error('Произошла ошибка обработки данных', e, data); // Уничтожаем сокет // client.destroy(); } // Разрешаем прием данных client.resume(); // Завершаем работу сервера client.end(); } });
fs.readFile(gx.root + 'config/config.json', 'utf-8', function(err, fileContents){ if(gx.isset(err)) throw err; else { try { // Извлекаем данные конфига gx.config = JSON.parse(fileContents); // Запоминаем версию игры $.version = gx.config.version; // Если функция обратного вызова существует if(gx.isFunction(callback)) callback.call(gx, gx.config); } catch(e) {/* Если возникает ошибка то ничего не делаем */} } });