Эта статья является частью серии технологий веб-разработки от Microsoft. Спасибо за поддержку партнеров, которые делают возможным использование SitePoint.
Эта серия руководств по Node.js поможет вам создать веб-приложение для чатов в режиме реального времени с поддержкой Node.js, полностью развернутое в облаке. В этой серии вы узнаете, как настроить Node.js на вашем компьютере с Windows (или просто познакомитесь с концепциями, если вы работаете на Mac), как разработать веб-интерфейс с Express , как развернуть приложение Node.js Express для Azure , как использовать Socket.IO для добавления слоя в реальном времени и как развернуть его все вместе.
В этом учебном пособии в качестве среды разработки будут использоваться необязательный плагин Visual Studio и плагин Node.js Tools for Visual Studio . Я предоставил ссылки на бесплатные загрузки обоих инструментов. Это статья для начинающих и среднего уровня — вы должны знать HTML5 и JavaScript.
Часть 2. Добро пожаловать в экспресс с Node.js и Azure
Часть 3 — Создание серверной части с Node.js, Mongo и Socket.IO
Часть 4. Создание пользовательского интерфейса чата с помощью Bootstrap
Часть 5. Соединение чата с помощью WebSockets
Часть 5. Соединение чата с помощью WebSockets
Добро пожаловать в пятую часть практического руководства по Node.js: создайте веб-приложение для чата на основе Node.js.
В этой статье я покажу вам, как подключить интерфейсный чат к бэкенду чат-комнаты Node.js, который вы создали в части 2 , части 3 и части 4 .
Добавление jQuery, SocketIO и index.js
Первое, что мы хотим сделать перед тем, как приступить к написанию внешнего кода JavaScript, — это обеспечить, чтобы необходимые нам файлы и зависимости доставлялись сервером Node.js. Давайте сначала добавим jQuery
и Socket.IO
в файл layout.jade
который расширен всеми остальными jade-файлами в нашем проекте.
Замените одну ссылку на bootstrap.min.js
ссылкой на все остальные нужные нам файлы.
script(type='text/javascript' src='http://ajax.aspnetcdn.com/ajax/jQuery/jquery2.1.1.min.js') script(type='text/javascript' src='/js/bootstrap.min.js') script(type='text/javascript' src='/socket.io/socket.io.js')
Обратите внимание, что первая строка ссылается на jQuery, размещенный в сети доставки контента Microsoft Ajax . Этот CDN содержит популярные сторонние библиотеки JavaScript, такие как jQuery, и позволяет легко добавлять их в ваши веб-приложения. Вы можете значительно улучшить производительность ваших Ajax-приложений, используя CDN. Содержимое CDN кэшируется на серверах, расположенных по всему миру. CDN поддерживает SSL (HTTPS) на случай, если вам нужно обслуживать веб-страницу с использованием уровня защищенных сокетов.
Теперь я добавлю еще одну строку в конце, чтобы создать новый блок.
block body_end
Я делаю это так, чтобы любой Jade-файл, который расширяет layout.jade
также мог добавлять теги script непосредственно перед концом тега body.
Теперь мы хотим использовать этот новый блок, чтобы добавить ссылку на наш файл index.js
который мы создадим в папке public/js
, обязательно создайте файл.
block body_end script(type='text/javascript' src='/js/index.js')
Удостоверьтесь, что блок начинается с нулевого отступа, чтобы следовать соглашениям кодирования Jade. Если вы запустите сервер Node.js и перейдете на главную страницу своего браузера, вы увидите в инструментах F12, что файлы обслуживаются правильно.
Быстрые изменения в app.js
Есть несколько вещей, которые я хочу изменить в app.js
Во-первых, я хочу изменить направление сортировки, чтобы самые старые сообщения отправлялись первыми и вторыми. Я также хочу отправлять ранее полученные сообщения чата на тот же канал, на котором планирую получать новые сообщения. Изменения пойдут в строку 49 и 50 в app.js
Это результат:
var stream = collection.find().sort().limit(10).stream(); stream.on('data', function (chat) { socket.emit('chat', chat.content); });
Не забудьте установить CUSTOMCONNSTR_MONGOLAB_URI
среды CUSTOMCONNSTR_MONGOLAB_URI
перед app.js
файла app.js
как в противном случае бэкэнд Node.js будет аварийно app.js
когда он не сможет подключиться к вашей MongoDB.
Включение кнопки отправки
Настало время включить эту кнопку отправки, чтобы отправлять сообщения в окне сообщений с помощью WebSockets на внутренний сервер в канале чата.
var socket = io(); $('#send-message-btn').click(function () { var msg = $('#message-box').val(); socket.emit('chat', msg); $('#messages').append($('<p>').text(msg)); $('#message-box').val(''); return false; }); socket.on('chat', function (msg) { $('#messages').append($('<p>').text(msg)); });
Строка 1
Мы хотим создать сокет, и мы можем сделать это, вызвав функцию io()
которая находится в socket.io-client.js
.
Линия 2
После этого мы хотим выполнить функцию нажатием кнопки «Отправить сообщение», используя функцию jQuery $()
и метод click()
.
Линия 3
Мы получим строковое значение в окне сообщения, используя функцию jQuery $()
и метод val()
.
Строка 4
Мы используем функцию emit()
для переменной сокета, которую мы создали в строке 1, чтобы отправить сообщение по каналу «chat», содержащее значение окна сообщения.
Строка 5-7
На этом этапе мы добавим сообщение в окне сообщений в div
, в котором в качестве идентификатора сообщения будут использоваться messages
, чтобы пользователь мог видеть, что сообщение было отправлено. Мы присвоим значение окна сообщения пустой строке, чтобы очистить его.
Линия 9-10
Мы хотим добавить сообщение, полученное по каналу чата от других пользователей, в div
, в котором messages
идентификатор. Серверная часть Node.js не будет повторно отправлять сообщение, которое клиент записал обратно себе, но это нормально, потому что мы сразу добавили сообщение в обработчик функции click()
.
Вывод
Вуаля! Вы подключили свой бэкэнд и интерфейс с помощью WebSockets. Если вы хотите идентифицировать людей в чате или добавить аватар для каждого пользователя, это ваше дело, но вы можете использовать этот чат в дальнейшем. В следующей части я покажу вам, как развернуть этот анонимный чат в Azure, и покажу, как его можно отладить.
Оставайтесь с нами для части 6!
Часть 6. Финал и отладка приложений удаленного узла! здесь Вы можете быть в курсе этой и других статей, следуя моей учетной записи в Twitter
Подробнее Node.js Обучение на Azure
Для более глубокого изучения на узле, мой курс доступен здесь, в Microsoft Virtual Academy.
Или видео в более коротком формате на похожие темы:
Эта статья является частью серии технологий веб-разработки от Microsoft. Мы рады поделиться с вами Project Spartan и его новым механизмом рендеринга . Получите бесплатные виртуальные машины или проведите удаленное тестирование на устройстве Mac, iOS, Android или Windows на сайте modern.IE .