
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 г.