Автор оригинала: ScaleGrid.io.
ScaleGrid – единственный монгодб и Redis Hosting Решение, которое позволяет вам управлять экземплярами Mongo и Redis на оба общественных облака, так и на помещениях из одной центральной консоли. Попробуйте нас бесплатно в течение 30 дней.
Первоначально этот пост был представлен это прошлое января на ScaleGred Blog Под названием «используя Redis с Node.js и Socket.io».
Так как он быстро стал популярным постом и сильно поделился зрителями в социальных сетях, мы думали, что также будет полезно поделиться с этой аудиторией.
В этой статье мы покажем вам, как построить приложение в реальном времени, используя следующие технологии:
- Редис
- Node.js + Express.js.
- Socket.IO
- Heroku
Redis является открытым исходным кодом (BSD Licensed), хранение структуры данных в памяти, используемая в качестве базы данных, кэш и брокер сообщений. Он поддерживает структуры данных, такие как строки, хэши, списки, наборы, отсортированные наборы с операциями диапазона, растровые изображения, гиперблоглы и геопространственные индексы с запросами RADIUS.
В этом приложении мы будем подключаться к одному из кластеров, размещенных на ScaleGrid.
Node.js Является ли платформой, построенная на выполнении JavaScript Chrome, для легкого строить быстрые и масштабируемые сетевые приложения. Node.js использует, приводимуваясь от событий, неблокирующая модель ввода/вывода, которая делает его легким и эффективным, и, таким образом, идеально подходит для приложений в реальном времени в режиме реального времени, которые запускаются по распределенным устройствам.
Express.js это структура Node.js. Node.js – это платформа, которая позволяет использовать JavaScript вне веб-браузеров для создания веб-приложений и сетевых приложений. Это означает, что вы можете создать сервер и серверный код для приложения, подобного большинству других веб-языков, но используя JavaScript.
Socket.io Является ли библиотека JavaScript для веб-приложений в реальном времени. Это позволяет в режиме реального времени, двунаправленную связь между веб-клиентами и серверами. Он имеет две части: клиентская библиотека, которая работает в браузере, и библиотека на стороне сервера для Node.js. Оба компонента имеют почти идентичные API.
Heroku Это облачная платформа, которая позволяет компаниям построить, доставлять, монитор и масштабировать приложения – это самый быстрый способ отправиться от идеи к URL, в обход всей инфраструктурной головной боли.
Эта статья предполагает, что у вас уже есть Redis, Node.js и The Geroku Toolbelt, установленные на вашем компьютере.
Настраивать
Создайте папку и дайте ей имя. Вы можете создать его в любом месте на вашей машине, так как Node.js не нужен специальный сервер, такой как Apache/Nginx.
Шаг 1:
Инициализируйте файл package.json, запустив npm init.
Шаг 2:
Установите следующие зависимости:
- экспресс
- Socketio
- редис
… и один другой метод утилиты:
- парсер
Запустив следующую команду:
Шаг 3:
Создайте общую папку для хранения наших файлов CSS и JS.
Шаг 4:
Создайте папку Views для хранения нашего основного HTML-файла.
Шаг 5:
Создайте файл Creds.json, который будет содержать учетные данные для подключения к нашему кластеру Redis. Следует следовать этому формату:
Шаг 6:
Создайте файл index.js, который пройдет наш код Node.js и послужит отправной точкой для Heroku.
Шаг 7:
Добавьте файл .gitignore, чтобы папку Node_Modules не проверяется в Heroku.
После окончания шага 7 вы должны иметь следующую структуру:
Шаг 8:
Теперь, когда все настроено, мы можем начать писать наш задний код. Прежде всего, нам нужно ввести все наши модули, поэтому откройте файл index.js и вставьте следующее:
Прежде чем мы сможем начать писать любой код, нам нужен кластер работает Redis. К счастью, Redis на FlaceGrid обеспечивает высокую производительность, одним щелчком мыши и полностью управляемого решение Redis-As-A-Service.
Если вы еще не являетесь участником, вы можете подписаться на бесплатную 30-дневную пробную версию здесь Отказ
В противном случае войдите в приборную панель и создайте новый кластер Redis под раздел Redis.
Как только создание кластера будет завершено, отметьте приведенную вышеуказанную информацию и добавьте ее в соответствующие поля файла Credss.json.
Теперь, когда у нас есть настройки наших учетных данных, мы готовы создавать наш клиент Redis в узле, который подключится к нашему кластеру и начнет хранить пары клавишных значений.
Добавьте следующий код в файл index.js:
Приведенный выше код делает две вещи:
- Читает учетные данные от Creds.json и создают клиент Redis, который используется для выполнения операций клавиш.
- После того, как клиент будет готов, мы заполняем Chatters и Chat_messages, поэтому любые новые члены, которые присоединяются, смогут увидеть историю чата.
Теперь мы собираемся написать пару API для обработки приложений чата. Нам нужны следующие API:
- Присоединяйтесь к комнате [Пост]
- Оставить комнату [Пост]
- Отправить сообщение [Post]
- Получить сообщения [GET]
- Получить членов [GET]
Начнем с API Join Room. Это называется, когда любой новый пользователь сначала начинает приложение и пытается присоединиться к чату.
Здесь у нас есть API для выхода из чата:
Отправка и хранение сообщения:
Получить все сообщения в комнате:
Получите все члены:
После того, как у нас есть все настройки API, нам нужно написать код Socket.io для выбросов событий, когда некоторые свойства, такие как следующее обновление:
- Количество номеров
- Сообщения
Эти события затем подбираются на переднем конце библиотеки Socket.IO, в свою очередь, обновляет пользовательский интерфейс.
Шаг 9:
Теперь нам нужно построить наш интерфейс, который позволит пользователям войти в систему и чат.
Откройте файл index.html и добавьте следующий код:
Шаг 10:
Чтобы сделать нашу HTML-работу, нам нужно добавить некоторые события AJAX JavaScript, которые будут обрабатывать различные операции, такие как присоединение к комнате, уезжая, отправляя сообщение и т. Д.
Следующий код получает количество болта, чтобы мы могли обновить UI об общем количестве людей в комнате:
Этот код позволяет пользователям присоединиться к чату. Имена пользователей уникальны и не могут быть дублированы.
Вот код для разрешения пользователей покидать чат:
Вот код, который запускается каждый раз, когда кто-то отправляет сообщение:
Ниже приведен код Socket.io, который слушает события с заднего конца и обновляет пользовательский интерфейс. Например, добавление новых сообщений в область сообщений, обновляя количество болтовни и т. Д.
И вы сделали! Выпустите сервер, используя NPM Start и откройте несколько Windows Browser для имитации нескольких пользователей.
Демонстрация заявки доступна здесь: https://node-socket-redis-chat.herokuapp.com/
Другие источники
Для развертывания этого приложения на Heroku проверим свои документы: https://devcenter.heroku.com/category/deplobement
Весь исходный код доступен на Github для вас для вилки и работы по: https://github.com/scalegrid/code-samples/tree/sg-redis-node-socket-chat/redis-node-socket-chat.
Как всегда, если вы построете что-то потрясающее, делайте Tweet нас об этом @ScaleGridio
Если вам нужна помощь с хостингом и управлением Redis, давайте упростим для вас нашими профессиональными услугами.