Старайтесь не распространять ключи доступа среди других пользователей, жестко программировать их или где-то сохранять в виде обычного текста в открытом доступе для других пользователей. Меняйте свои ключи постоянно, если предполагаете, что они могут быть подобраны.
Необходимые компоненты
Учетная запись Azure с активной подпиской. Если у вас нет учетной записи, вы можете создать ее бесплатно.
Приложение получит доступ к Служба Azure SignalR экземпляру. Выполните следующие действия, чтобы создать экземпляр Служба Azure SignalR с помощью портал Azure:
Создание приложения-функции Azure и учетной записи хранения Azure
На домашней странице в портал Azure выберите "Создать ресурс" (+).
Найдите приложение-функцию и выберите его.
Нажмите кнопку создания.
Введите следующую информацию.
Имя.
Значение
Группа ресурсов
Используйте ту же группу ресурсов с экземпляром Служба Azure SignalR.
Имя приложения-функции
Введите уникальное имя приложения-функции.
Стек среды выполнения
Выберите Node.js.
Регион
Выберите ближайший регион.
По умолчанию новая учетная запись хранения Azure создается в той же группе ресурсов вместе с приложением-функцией. Если вы хотите использовать другую учетную запись хранения в приложении-функции, перейдите на вкладку "Размещение ", чтобы выбрать учетную запись.
Выберите Просмотр и создание, а затем нажмите кнопку Создать.
Создание проекта Функции Azure локально
Инициализация приложения-функции
В командной строке создайте корневую папку для проекта и перейдите в папку.
Выполните следующую команду в терминале, чтобы создать проект функций JavaScript:
По умолчанию созданный проект включает host.json-файл , содержащий пакеты расширений, которые включают расширение SignalR. Дополнительные сведения о пакетах расширений см. в разделе "Регистрация Функции Azure расширений привязки".
Настройка параметров приложения
При локальном запуске и отладке среды выполнения Функции Azure приложение-функция считывает параметры приложения из local.settings.json. Обновите этот файл с помощью строка подключения экземпляра Служба Azure SignalR и созданной ранее учетной записи хранения.
Введите Служба Azure SignalR строка подключения в AzureSignalRConnectionString параметр.
Чтобы получить строку, перейдите к экземпляру Служба Azure SignalR в портал Azure.
В разделе "Параметры" найдите параметр "Ключи". Нажмите кнопку "Копировать" справа от строка подключения, чтобы скопировать ее в буфер обмена. Вы можете использовать основной или вторичный строка подключения.
Введите строка подключения учетной записи хранения в AzureWebJobsStorage параметр.
Чтобы получить строку, перейдите в учетную запись хранения в портал Azure. В разделе Безопасность и сеть найдите параметр Ключи доступа. Нажмите кнопку "Копировать" справа от строка подключения, чтобы скопировать ее в буфер обмена. Вы можете использовать основной или вторичный строка подключения.
Создание функции для проверки подлинности пользователей в Служба Azure SignalR
При первом открытии приложения чата в браузере оно запросит допустимые учетные данные для подключения к службе Azure SignalR. Создайте функцию триггера HTTP с именем negotiate в приложении-функции, чтобы вернуть эти сведения о подключении.
Примечание
Эта функция должна быть названа negotiate , так как для клиента SignalR требуется конечная точка, которая заканчивается /negotiate.
Функция содержит привязку триггера HTTP для получения запросов от клиентов SignalR. Функция также содержит входную привязку SignalR для создания допустимых учетных данных для клиента для подключения к Служба Azure SignalR концентратору с именем default.
Эта функция принимает сведения о подключении SignalR из входной привязки и возвращает его клиенту в тексте ответа HTTP.
В привязке для локальной разработки signalRConnectionInfo нет userId свойства. Позже вы добавите его, чтобы задать имя пользователя подключения SignalR при развертывании приложения-функции в Azure.
В корневой папке проекта создайте negotiate функцию из встроенного шаблона с помощью следующей команды:
Bash
func new --template "SignalR negotiate HTTP trigger" --name negotiate
Откройте согласование или function.json для просмотра конфигурации привязки функции.
Функция содержит привязку триггера HTTP для получения запросов от клиентов SignalR. Функция также содержит входную привязку SignalR для создания допустимых учетных данных для клиента для подключения к Служба Azure SignalR концентратору с именем default.
В привязке для локальной разработки signalRConnectionInfo нет userId свойства. Позже вы добавите его, чтобы задать имя пользователя подключения SignalR при развертывании приложения-функции в Azure.
Закройте файл переговоров или function.json.
Откройте переговоры или index.js , чтобы просмотреть текст функции:
Эта функция принимает сведения о подключении SignalR из входной привязки и возвращает их клиенту в тексте ответа HTTP. Клиент SignalR использует эти сведения для подключения к экземпляру Служба Azure SignalR.
Также этому веб-приложению нужен API-интерфейс HTTP для отправки сообщений чата. Создайте функцию триггера HTTP, которая отправляет сообщения всем подключенным клиентам, используюющим Служба Azure SignalR:
Функция содержит триггер HTTP и выходную привязку SignalR. Он принимает текст из HTTP-запроса и отправляет его клиентам, подключенным к Служба Azure SignalR. Он вызывает функцию с именем newMessage на каждом клиенте.
Функция может считывать удостоверение отправителя и принимать recipient значение в тексте сообщения, чтобы вы могли отправлять сообщение в частном порядке одному пользователю. Эти функции будут использоваться далее в руководстве.
Сохраните файл.
В корневой папке проекта создайте функцию триггера HTTP с именем sendMessage из шаблона с помощью следующей команды:
Bash
func new --name sendMessage --template "Http trigger"
Чтобы настроить привязки для функции, замените содержимое sendMessage/function.json следующим кодом:
Предыдущий код вносит два изменения в исходный файл:
Он изменяет маршрут messages на и ограничивает триггер HTTP методом POST HTTP.
Он добавляет Служба Azure SignalR выходную привязку, которая отправляет сообщение, возвращаемое функцией всем клиентам, подключенным к Служба Azure SignalR концентраторуdefault.
Замените содержимое sendMessage/index.js следующим кодом:
Эта функция принимает текст из HTTP-запроса и отправляет его клиентам, подключенным к Служба Azure SignalR. Он вызывает функцию с именем newMessage на каждом клиенте.
Функция может считывать удостоверение отправителя и принимать recipient значение в тексте сообщения, чтобы вы могли отправлять сообщение в частном порядке одному пользователю. Эти функции будут использоваться далее в руководстве.
Пользовательский интерфейс приложения чата — это простое одностраничное приложение (SPA), созданное с помощью платформы JavaScript Vue, с помощью клиента JavaScript ASP.NET Core SignalR. Для простоты приложение-функция размещает веб-страницу. В рабочей среде можно использовать Статические веб-приложения для размещения веб-страницы.
Вы работали с приложением-функцией и приложением чата локально. Теперь разверните их в Azure и включите проверку подлинности и частные сообщения.
Настройка приложения-функции для проверки подлинности
Сейчас приложение чата работает анонимно. В Azure вы будете использовать проверку подлинности Служба приложений для проверки подлинности пользователя. Идентификатор пользователя или имя пользователя, прошедшего проверку подлинности, передается SignalRConnectionInfo в привязку для создания сведений о подключении, прошедших проверку подлинности от имени пользователя.
userId Вставьте свойство в привязку inputSignalR со значением{headers.x-ms-client-principal-name}. Это значение является выражением привязки, которое задает имя пользователя клиента SignalR именем пользователя, прошедшего проверку подлинности. Теперь привязка должна выглядеть следующим образом:
userId Вставьте свойство в привязку SignalRConnectionInfo со значением{headers.x-ms-client-principal-name}. Это значение является выражением привязки, которое задает имя пользователя клиента SignalR именем пользователя, прошедшего проверку подлинности. Теперь привязка должна выглядеть следующим образом:
Параметр --publish-local-settings публикует локальные параметры из файла local.settings.json в Azure, поэтому вам не нужно снова настраивать их в Azure.
Включение аутентификации в Службе приложений
Функции Azure поддерживает проверку подлинности с помощью идентификатора Microsoft Entra, Facebook, X, учетной записи Майкрософт и Google. Вы будете использовать Корпорацию Майкрософт в качестве поставщика удостоверений для этого руководства.
В портал Azure перейдите на страницу ресурсов приложения-функции.
Выберите "Параметры проверки подлинности>".
Выберите Добавить поставщик удостоверений.
В списке поставщиков удостоверений выберите Майкрософт. Нажмите кнопку Добавить.
Завершенные параметры создают регистрацию приложения, которая связывает поставщика удостоверений с приложением-функцией.
Дополнительные сведения о поддерживаемых поставщиках удостоверений см. в следующих статьях:
Чтобы очистить ресурсы, созданные в этом руководстве, удалите группу ресурсов с помощью портал Azure.
Внимание!
При удалении группы ресурсов удаляются все содержащиеся в ней ресурсы. Если группа ресурсов содержит ресурсы вне области этого руководства, они также удаляются.
Из этого руководства вы узнали, как использовать Функции Azure со службой Azure SignalR. Дополнительные сведения о создании бессерверных приложений в режиме реального времени с привязками Служба Azure SignalR для Функции Azure:
Измените механизм обновления веб-приложения JavaScript с опроса на архитектуру на основе push-уведомлений в режиме реального времени с помощью Службы SignalR, Azure Cosmos DB и Функций Azure. Используйте Vue.js и JavaScript для использования SignalR с помощью Visual Studio Code.
Создавайте комплексные решения в Microsoft Azure для создания Функции Azure, реализации веб-приложений и управления ими, разработке решений, использующих службу хранилища Azure, и т. д.
В этом кратком руководстве показано, как с помощью Службы Azure SignalR, Функций Azure и JavaScript создать приложение для отображения количества звездочек на странице GitHub.