|
|
|
Попробуй систему в действии, бесплатно и быстро. |
|
|
|
|
|
|
|
|
|
Бесплатная регистрация в трастовых каталогах и досках обьявлений. |
|
|
|
|
|
|
|
|
|
Добавь бесплатно сайт в 211 поисковые системы. Ru, Eng, Fra, Esp, Ukr. |
|
|
|
|
|
|
 |
|
TCP-сервер, обновляющий хранилище данных Redis
var net = require('net'); var redis = require('redis');
var server = net.createServer(function(conn) { console.log('connected');
// создание Redis-клиента var client = redis.createClient();
client.on('error', function(err) { console.log('Error ' + err); });
// пятая база данных, являющаяся базой данных показателей игры client.select(5); conn.on('data', function(data) { console.log(data + ' from ' + conn.remoteAddress + ' ' +
conn.remotePort); try { var obj = JSON.parse(data);
// добавление или перезапись показателя client.hset(obj.member, "first_name", obj.first_name, redis.print); client.hset(obj.member, "last_name", obj.last_name, redis.print);
client.hset(obj.member, "score", obj.score, redis.print); client.hset(obj.member, "date", obj.date, redis.print);
// добавление показателя для игры Zowie! client.zadd("Zowie!", parseInt(obj.score), obj.member); } catch(err) { console.log(err); } }); conn.on('close', function() { console.log('клиент закрыл подключение'); client.quit(); });
}).listen(8124);
console.log('listening on port 8124');
Redis-соединение устанавливается при создании сервера и закрывается при отключении сервера. Другой подход заключается в создании статического клиентского соединения, существующего между запросами, но у него имеются недостатки. Дополнительные сведения о том, когда создавать Redis-клиента, можно найти далее в соответствующей врезке. В Redis преобразование объектов и надежное сохранение данных реализовано посредством обработки исключений — это позволяет оградить сервер от падения в случае опечаток при вводе.
Как уже отмечалось, на данном этапе обновляются два разных хранилища данных: информация об индивидуальном счете (включая имя, счет и дату) хранится в хэше, а идентификатор игрока и счет — в отсортированном наборе данных. Идентификатор игрока используется в хэше в качестве ключа, в то время как счет игры — в качестве показателя для идентификатора игрока в отсортированном наборе. Важным для работы приложения является идентификатор игрока, который фигурирует в обоих хранилищах данных.
Следующей частью приложения является механизм вывода обладателей пяти наивысших показателей в нашей вымышленной игре (она называется Zowie!). В отсортированном наборе вы можете извлечь диапазон данных по показателям, используя Redis-команду zrange. Однако эта функция возвращает диапазон значений, отсортированный от самого низкого до самого высокого, что является результатом, обратным желаемому. А нам нужно, чтобы были возвращены первые пять наивысших результатов, отсортированных так, чтобы первым был наивысший из них. Для решения этой задачи используется Redis-команда zrevrange.
Теперь для вывода пятерки самых лучших игроков мы создадим HTTP-сервер, который вернет результаты в виде простого табличного списка. Чтобы обеспечить относительно приглядный внешний вид, мы задействуем систему шаблонов Jade, причем без Express, поскольку для нашего игрового приложения платформа Express не нужна.
Чтобы использовать Jade без Express, нужно прочитать исходный файл шаблона, а затем вызвать метод compile, передав ему строку файла шаблона и параметры. Единственным параметром является filename (имя файла), поскольку в файле шаблона я использую директиву include, для которой требуется имя файла. Фактически, я задаю имя файла шаблона и его местоположение, но вам нужно использовать любое имя файла, которое возвращает размещение каталога относительно файлов, включенных в Jade-шаблон.
Что касается самого шаблона, в листинге показано содержимое Jade-файла. Обратите внимание на то, что я использую директиву include для непосредственной вставки CSS в файл. Поскольку в этом приложении статический файловый сервер я не применяю, приложение не сможет обработать CSS-файл, если я просто вставлю ссылку на него. Также обратите внимание на наличие канала (|) с открывающими и закрывающими тегами style, которые относятся к HTML-, а не к Jade-синтаксису. Причина в том, что Jade не обрабатывает включенный файл, если он указан внутри тега style.
Для того чтобы сайт был всегда в ТОП выдачи не обязательно платить и переплачивать, достаточно добавить сайт Добавить сайт бесплатно в трастовые каталоги в белые каталоги для быстрой индексации в поисковых системах, в специально написанном бесплатном модуле.
Если Вам был полезен этот материал и Вы бы хотели сохранить ссылку на своём сайте, просто скопируйте и установите этот баннер на сайте. Мы будем очень признательны.
Пример баннера
 |
Скопируйте код на свой сайт
|
|