SignalR — это мощная библиотека для создания веб-приложений в реальном времени. Это позволяет легко добавлять в приложение функции реального времени, такие как чат, уведомления и оперативные обновления. В этом руководстве вы узнаете, как настроить концентратор SignalR и подключиться к нему с помощью JavaScript.
Шаг 1. Создайте новое основное веб-приложение ASP.NET.
Первым шагом является создание хаба. Концентратор — это класс, который действует как мост между клиентом и сервером. Он позволяет вызывать методы на сервере с клиента и наоборот.
Во-первых, нам нужно создать новое основное веб-приложение ASP.NET. Откройте Visual Studio и выберите «Создать новый проект». Выберите шаблон «ASP.NET Core Web Application» и назовите свой проект. В этом уроке мы назовем его «SignalRHub».
Шаг 2. Установите пакет SignalR
Далее нам нужно установить пакет SignalR. Откройте «Консоль диспетчера пакетов» и выполните следующую команду:
Install-Package Microsoft.AspNetCore.SignalR
Шаг 3. Создайте концентратор SignalR
Теперь давайте создадим концентратор SignalR. В проекте «SignalRHub» создайте новую папку «Hubs» и добавьте в нее новый класс «ChatHub». Этот класс будет наследоваться от «Hub».
using Microsoft.AspNetCore.SignalR; public class ChatHub : Hub { public async Task SendMessage(string user, string message) { await Clients.All.SendAsync("ReceiveMessage", user, message); } }
В этом примере мы создаем простое приложение для чата. Метод «SendMessage» вызывается, когда клиент отправляет сообщение, и он отправляет сообщение всем клиентам, подключенным к хабу, используя свойство «Clients.All».
Шаг 4. Настройте концентратор SignalR
Далее нам нужно настроить концентратор SignalR в классе «Автозагрузка». В методе «ConfigureServices» добавьте следующую строку:
services.AddSignalR();
В методе «Настроить» добавьте следующую строку:
app.UseEndpoints(endpoints => { endpoints.MapHub<ChatHub>("/chat"); });
Это сопоставит «ChatHub» с конечной точкой «/chat».
Шаг 5. Подключитесь к концентратору SignalR с помощью JavaScript
Наконец, мы можем подключиться к концентратору SignalR с помощью JavaScript. В вашем HTML-файле добавьте следующий скрипт в раздел head:
Это загрузит библиотеку JavaScript SignalR. Затем добавьте следующий скрипт для подключения к хабу:
<script> var connection = new signalR.HubConnectionBuilder() .withUrl("/chat") .build(); connection.on("ReceiveMessage", function (user, message) { var msg = message.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, "&>"); var encodedMsg = user + " says " + msg; var li = document.createElement("li"); li.textContent = encodedMsg; document.getElementById("messagesList").appendChild(li); }); connection.start().catch(function (err) { return console.error(err.toString()); }); document.getElementById("sendButton").addEventListener("click", function (event) { var user = document.getElementById("userInput").value; var message = document.getElementById("messageInput").value; connection.invoke("SendMessage", user, message).catch(function (err) { return console.error(err.toString()); }); event.preventDefault(); }); </script>
Этот скрипт создает новое подключение к концентратору, используя класс «HubConnectionBuilder» и конечную точку «/chat». Метод on используется для прослушивания сообщений от хаба. В этом примере мы прослушиваем событие «ReceiveMessage» и добавляем сообщение в список в HTML. Для запуска соединения используется метод start.
Метод catch используется для обработки любых ошибок, которые могут возникнуть при подключении или отправке сообщения.
Сценарий также добавляет прослушиватель событий к элементу «sendButton», который используется для отправки сообщения в хаб. Метод «invoke» используется для вызова метода «SendMessage» в концентраторе, передавая пользователя и сообщение.
В HTML вы можете добавить форму для получения пользователя и сообщения, а также неупорядоченный список для отображения сообщений.
<form> <label for="userInput">User:</label> <input type="text" id="userInput" /> <br /> <label for="messageInput">Message:</label> <input type="text" id="messageInput" /> <br /> <button type="submit" id="sendButton">Send</button> </form> <ul id="messagesList"></ul>
Это простой пример того, как подключиться к концентратору SignalR с помощью JavaScript. Вы можете настроить его в соответствии с вашими потребностями и добавить дополнительные функции по мере необходимости.
Я надеюсь, что это руководство поможет вам понять, как подключиться к концентратору SignalR с помощью JavaScript. Это мощная библиотека, которая может легко добавить функциональность в реальном времени в ваше приложение, и она поддерживается .NET Core, что делает ее отличным выбором для веб-разработчиков.
Первоначально опубликовано на https://jamilhallal.blogspot.com 16 января 2023 г.