Рубрики
Без рубрики

Как построить Thatbot в реальном времени

Мы покажем вам, как построить приложение для чата в реальном времени с помощью Redis, Node.js + Express.js, Socket.io и Heroku. Прочитайте сообщение сегодня!

Автор оригинала: 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.

Выстрел на экране 2017-03-13 в 7.11.42 PM.PNG

Шаг 2:

Установите следующие зависимости:

  • экспресс
  • Socketio
  • редис

… и один другой метод утилиты:

  • парсер

Запустив следующую команду:

Снятый экран 2017-03-13 в 7.13.04 PM.PNG

Шаг 3:

Создайте общую папку для хранения наших файлов CSS и JS.

Снятый на экран 2017-03-13 в 7.13.40 PM.PNG

Шаг 4:

Создайте папку Views для хранения нашего основного HTML-файла.

Снятый на экран 2017-03-13 в 7.13.52 PM.PNG

Шаг 5:

Создайте файл Creds.json, который будет содержать учетные данные для подключения к нашему кластеру Redis. Следует следовать этому формату:

Снятый на экран 2017-03-13 в 7.14.52 PM.PNG

Шаг 6:

Создайте файл index.js, который пройдет наш код Node.js и послужит отправной точкой для Heroku.

Шаг 7:

Добавьте файл .gitignore, чтобы папку Node_Modules не проверяется в Heroku.

Выстрел на экране 2017-03-13 в 7.15.41 PM.PNG

После окончания шага 7 вы должны иметь следующую структуру:

Выстрел на экране 2017-03-13 в 7.16.25 PM.PNG

Шаг 8:

Теперь, когда все настроено, мы можем начать писать наш задний код. Прежде всего, нам нужно ввести все наши модули, поэтому откройте файл index.js и вставьте следующее:

Снятый на экран 2017-03-13 в 7.17.02 PM.PNG

Прежде чем мы сможем начать писать любой код, нам нужен кластер работает Redis. К счастью, Redis на FlaceGrid обеспечивает высокую производительность, одним щелчком мыши и полностью управляемого решение Redis-As-A-Service.

Если вы еще не являетесь участником, вы можете подписаться на бесплатную 30-дневную пробную версию здесь Отказ

В противном случае войдите в приборную панель и создайте новый кластер Redis под раздел Redis.

Выстрел на экране 2017-03-13 в 7.18.14 PM.PNG

Как только создание кластера будет завершено, отметьте приведенную вышеуказанную информацию и добавьте ее в соответствующие поля файла Credss.json.

Теперь, когда у нас есть настройки наших учетных данных, мы готовы создавать наш клиент Redis в узле, который подключится к нашему кластеру и начнет хранить пары клавишных значений.

Добавьте следующий код в файл index.js:

Снимок экрана 2017-03-13 в 7.18.51 PM.PNG

Приведенный выше код делает две вещи:

  1. Читает учетные данные от Creds.json и создают клиент Redis, который используется для выполнения операций клавиш.
  2. После того, как клиент будет готов, мы заполняем Chatters и Chat_messages, поэтому любые новые члены, которые присоединяются, смогут увидеть историю чата.

Теперь мы собираемся написать пару API для обработки приложений чата. Нам нужны следующие API:

  • Присоединяйтесь к комнате [Пост]
  • Оставить комнату [Пост]
  • Отправить сообщение [Post]
  • Получить сообщения [GET]
  • Получить членов [GET]

Начнем с API Join Room. Это называется, когда любой новый пользователь сначала начинает приложение и пытается присоединиться к чату.

Выстрел на экране 2017-03-13 в 7.19.23 PM.PNG

Здесь у нас есть API для выхода из чата:

Выстрел на экране 2017-03-13 в 7.20.35 PM.PNG

Отправка и хранение сообщения:

Выстрел на экране 2017-03-13 в 7.20.59 PM.PNG

Получить все сообщения в комнате:

Снятый экран 2017-03-13 в 7.21.28 PM.PNG

Получите все члены:

Снятый на экран 2017-03-13 в 7.21.53 PM.PNG

После того, как у нас есть все настройки API, нам нужно написать код Socket.io для выбросов событий, когда некоторые свойства, такие как следующее обновление:

  • Количество номеров
  • Сообщения
Снимок экрана 2017-03-13 в 7.22.24 PM.PNG

Эти события затем подбираются на переднем конце библиотеки Socket.IO, в свою очередь, обновляет пользовательский интерфейс.

Шаг 9:

Теперь нам нужно построить наш интерфейс, который позволит пользователям войти в систему и чат.

Откройте файл index.html и добавьте следующий код:

Снятый экран 2017-03-13 в 7.23.05 PM.PNG

Шаг 10:

Чтобы сделать нашу HTML-работу, нам нужно добавить некоторые события AJAX JavaScript, которые будут обрабатывать различные операции, такие как присоединение к комнате, уезжая, отправляя сообщение и т. Д.

Следующий код получает количество болта, чтобы мы могли обновить UI об общем количестве людей в комнате:

Снимок экрана 2017-03-13 в 7.23.39 PM.PNG

Этот код позволяет пользователям присоединиться к чату. Имена пользователей уникальны и не могут быть дублированы.

Застрел на экране 2017-03-13 в 7.24.12 PM.PNG

Вот код для разрешения пользователей покидать чат:

Застрел на экране 2017-03-13 в 7.25.37 PM.PNG

Вот код, который запускается каждый раз, когда кто-то отправляет сообщение:

Снимок экрана 2017-03-13 в 7.26.13 PM.PNG

Ниже приведен код Socket.io, который слушает события с заднего конца и обновляет пользовательский интерфейс. Например, добавление новых сообщений в область сообщений, обновляя количество болтовни и т. Д.

Снятый на экран 2017-03-13 в 7.26.39 PM.PNG

И вы сделали! Выпустите сервер, используя 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, давайте упростим для вас нашими профессиональными услугами.