Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Подсказка
Socket.IO теперь изначально поддерживается в Azure. Чтобы масштабировать приложение Socket.IO для обработки тысяч подключений, приходится сталкиваться с многочисленными трудностями. Теперь, когда Azure изначально поддерживает Socket.IO, вы можете разрешить Azure обрабатывать масштабируемость и доступность. Узнайте больше о том, как получить любое Socket.IO приложение, работающее в Azure, с помощью нескольких строк кода.
Это важно
Облачные службы (классическая версия) переведены в разряд устаревших для всех клиентов с 1 сентября 2024 года. Все существующие запущенные развертывания будут остановлены и завершены корпорацией Майкрософт, и данные будут окончательно потеряны начиная с октября 2024 года. Для новых развертываний следует использовать Облачные службы Azure с расширенной поддержкой. Это новая модель развертывания на основе Azure Resource Manager.
Socket.IO обеспечивает связь в режиме реального времени между клиентами и сервером Node.js. В этом руководстве описано, как разместить приложения чата на основе Socket.IO в Azure. См. дополнительные сведения о socket.io.
На снимке экрана ниже показано готовое приложение:
! [Окно браузера, отображающее службу, размещенную в Azure][завершенное приложение]
Предпосылки
Убедитесь, что следующие продукты и версии установлены для успешного завершения примера, описанного в этой статье.
- Установите Visual Studio.
- Установка Node.js
- Установите Python версии 2.7.10
Создание проекта облачной службы
Ниже описано, как создать проект облачной службы, на котором размещено приложение Socket.IO.
В меню Пуск или на начальном экране найдите Windows PowerShell. Щелкните правой кнопкой мыши Windows PowerShell и выберите Запуск от имени администратора.
Сначала создайте каталог c:\node.
PS C:\> md nodeПерейдите в каталог c:\node.
PS C:\> cd nodeВведите указанные ниже команды для создания нового решения с именем
chatappи рабочей роли с именемWorkerRole1:PS C:\node> New-AzureServiceProject chatapp PS C:\Node> Add-AzureNodeWorkerRoleВы увидите следующий ответ:
Загрузка примера разговора
В этом проекте мы используем пример чата из [репозитория GitHub Socket.IO]. Выполните следующие действия, чтобы скачать пример и добавить его в ранее созданный проект.
Создайте локальную копию репозитория с помощью кнопки Клонировать . Можно также загрузить проект при помощи кнопки ZIP .
Перемещайтесь по структуре каталога локального репозитория, пока не доберетесь до каталога examples\chat. Скопируйте содержимое этого каталога в ранее созданный каталог C:\node\chatapp\WorkerRole1.
Выделенные элементы на предыдущем снимке экрана — это файлы, скопированные из каталога examples\chat .
Удалите из каталога C:\node\chatapp\WorkerRole1 файл server.js и переименуйте файл app.js в server.js. Этот шаг удаляет файл server.js по умолчанию, созданный ранее командлетом Add-AzureNodeWorkerRole, и заменяет его файлом приложения из примера чата.
Изменение Server.js и установка модулей
Прежде чем тестировать приложение в эмуляторе Azure, необходимо внести небольшие изменения. Выполните следующие действия над файлом server.js:
Откройте файл server.js в Visual Studio или в любом текстовом редакторе.
Найдите раздел зависимостей модуля в начале server.js и измените строку, содержащую sio = require('../../lib/socket.io') на sio = require('socket.io') следующим образом:
var express = require('express') , stylus = require('stylus') , nib = require('nib') //, sio = require('..//..//lib//socket.io'); //Original , sio = require('socket.io'); //Updated var port = process.env.PORT || 3000; //UpdatedЧтобы убедиться, что приложение прослушивает правильный порт, откройте server.js в Блокноте или избранном редакторе, а затем измените следующую строку, заменив 3000 на process.env.port следующим образом:
//app.listen(3000, function () { //Original app.listen(process.env.port, function () { //Updated var addr = app.address(); console.log(' app listening on http://' + addr.address + ':' + addr.port); });
Сохранив изменения в server.js, выполните следующие действия, чтобы установить необходимые модули, а затем проверьте приложение в эмуляторе Azure:
В Azure PowerShell измените каталоги на каталог C:\node\chatapp\WorkerRole1 и выполните следующую команду, чтобы установить модули, необходимые для этого приложения:
PS C:\node\chatapp\WorkerRole1> npm installЭта команда устанавливает модули, перечисленные в файле package.json. После завершения команды вы увидите выходные данные, аналогичные следующему снимку экрана:
Так как этот пример изначально был частью репозитория Socket.IO GitHub и напрямую ссылался на библиотеку Socket.IO по относительному пути, Socket.IO не ссылался в файле package.json, поэтому ее необходимо установить, выполнив следующую команду:
PS C:\node\chatapp\WorkerRole1> npm install socket.io --save
Тестирование и развертывание
Запустите эмулятор, выполнив следующую команду:
PS C:\node\chatapp\WorkerRole1> Start-AzureEmulator -LaunchПримечание.
Если вы столкнулись с проблемами при запуске эмулятора, например: Start-AzureEmulator: произошла неожиданная ошибка. Подробные сведения: произошла непредвиденная ошибка. Коммуникационный объект System.ServiceModel.Channels.ServiceChannel нельзя использовать для связи, так как он находится в состоянии Faulted.
Переустановите AzureAuthoringTools версии 2.7.1 и AzureComputeEmulator версии 2.7 (убедитесь, что версии совпадают).
Откройте веб-браузер и перейдите по адресу
http://127.0.0.1.В открывшемся окне окна браузера введите псевдоним и нажмите клавишу Enter. Этот шаг позволяет публиковать сообщения в виде определенного псевдонима. Чтобы проверить функциональные возможности нескольких пользователей, откройте больше окон браузера с помощью одного URL-адреса и введите разные псевдонимы.
После проверки приложения остановите эмулятор, выполнив следующую команду:
PS C:\node\chatapp\WorkerRole1> Stop-AzureEmulatorЧтобы развернуть приложение в Azure, воспользуйтесь командлетом Publish-AzureServiceProject . Рассмотрим пример.
PS C:\node\chatapp\WorkerRole1> Publish-AzureServiceProject -ServiceName mychatapp -Location "East US" -LaunchЭто важно
Обязательно используйте уникальное имя, иначе произойдет сбой в процессе публикации. После завершения развертывания откроется браузер с переходом к развернутой службе.
Если появляется сообщение о том, что предоставленного названия подписки в импортированном профиле публикации нет, то перед развертыванием в Azurе необходимо загрузить и импортировать профиль публикации для вашей подписки. См. раздел Развертывание приложения в Azure в статье Построение и развертывание приложения Node.js в облачной службе Azure.
! [Окно браузера, отображающее службу, размещенную в Azure][завершенное приложение]
Примечание.
Если появляется сообщение о том, что предоставленного названия подписки в импортированном профиле публикации нет, то перед развертыванием в Azurе необходимо загрузить и импортировать профиль публикации для вашей подписки. См. раздел Развертывание приложения в Azure в статье Построение и развертывание приложения Node.js в облачной службе Azure.
Теперь ваше приложение выполняется на платформе Azure и может передавать сообщения чата между различными клиентами с использованием Socket.IO.
Примечание.
Для упрощения, этот пример ограничен чатами между пользователями, подключенными к одному сеансу. Это означает, что если облачная служба создает два экземпляра рабочей роли, пользователи смогут общаться только с другими пользователями, подключенными к тому же экземпляру рабочей роли. Чтобы масштабировать приложение для работы с несколькими экземплярами роли, можно использовать технологию Service Bus, которая позволяет передавать состояние хранилища Socket.IO между несколькими экземплярами. Примеры см. в репозитории пакета Azure SDK для Node.js на GitHub использования очередей и тем служебной шины.
Дальнейшие действия
Из этого руководства вы узнали, как создать базовое приложение чата, размещенное в облачной службе Azure. Чтобы узнать, как разместить это приложение на веб-сайте Azure, см. Создание чат-приложения Node.js с Socket.IO на Azure Web Site.
Дополнительные сведения см. также в центре по разработке для Node.js.