.NET 帮助

Signalr C#(开发人员的工作原理)

发布 2023年十一月14日
分享:

现代网络的发展离不开交互性和实时反馈。在构建响应式应用程序时,实时网络功能必不可少。这正是 SignalR 的优势所在。 ASP.NET Core SignalR 是一个库,它能让您在应用程序中添加实时网络功能变得比您想象的还要简单。

在本教程中,我们将了解 SignalR 的基础知识和细微差别。让我们深入了解!

ASP.NET Core 中的 SignalR 简介

ASP.NET Core SignalR 为使用 WebSockets 和其他技术(如服务器发送事件)创建实时网络功能提供了一个 API。它不仅限于 ASP.NET Core。您可以在各种客户端(如浏览器或移动应用程序)中使用 SignalR,确保连接的客户端即时更新。

设置开发环境

开始时,您需要

构建 SignalR 中枢

SignalR 的核心是一个 SignalR 中枢,它是客户端和服务器交互的中心点。

创建一个新的 ASP.NET Core 项目。现在,添加一个新类并命名为 ChatHub。它将作为我们的 SignalR 中心。

using Microsoft.AspNetCore.SignalR;

public class ChatHub : Hub
{
    public async Task SendMessage(string user, string message)
    {
        await Clients.All.SendAsync("ReceiveMessage", user, message);
    }
}
using Microsoft.AspNetCore.SignalR;

public class ChatHub : Hub
{
    public async Task SendMessage(string user, string message)
    {
        await Clients.All.SendAsync("ReceiveMessage", user, message);
    }
}
Imports Microsoft.AspNetCore.SignalR

Public Class ChatHub
	Inherits Hub

	Public Async Function SendMessage(ByVal user As String, ByVal message As String) As Task
		Await Clients.All.SendAsync("ReceiveMessage", user, message)
	End Function
End Class
VB   C#

在公有类 Startup 中,让我们整合我们的集线器。

public void ConfigureServices(IServiceCollection services)
{
    services.AddSignalR();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapHub<ChatHub>("/chatHub");
    });
}
public void ConfigureServices(IServiceCollection services)
{
    services.AddSignalR();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapHub<ChatHub>("/chatHub");
    });
}
Public Sub ConfigureServices(ByVal services As IServiceCollection)
	services.AddSignalR()
End Sub

Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
	app.UseEndpoints(Sub(endpoints)
		endpoints.MapHub(Of ChatHub)("/chatHub")
	End Sub)
End Sub
VB   C#

客户端实施

SignalR 功能多样。本教程重点介绍ASP.NET Core 和 JavaScript 客户端库,SignalR 支持从 .NET 到 Java 的各种客户端。

使用 SignalR 客户端库

SignalR 客户端库允许客户端代码直接与服务器端连接和通信。在我们的示例中,让我们使用 JavaScript。

首先,添加 SignalR JavaScript 客户端库:

<script src="https://cdn.jsdelivr.net/npm/@microsoft/signalr@3.1.8/dist/browser/signalr.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@microsoft/signalr@3.1.8/dist/browser/signalr.js"></script>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<script src="https://cdn.jsdelivr.net/npm/@microsoft/signalr@3.1.8/dist/browser/signalr.js"></script>
VB   C#

现在,您可以连接到集线器:

const connection = new signalR.HubConnectionBuilder()
    .withUrl("/chatHub")
    .build();

connection.start();

connection.on("ReceiveMessage", (user, message) => {
    console.log(`${user} says: ${message}`);
});
const connection = new signalR.HubConnectionBuilder()
    .withUrl("/chatHub")
    .build();

connection.start();

connection.on("ReceiveMessage", (user, message) => {
    console.log(`${user} says: ${message}`);
});
const connection = (New signalR.HubConnectionBuilder()).withUrl("/chatHub").build()

connection.start()

connection.on("ReceiveMessage", Sub(user, message)
	console.log(`${user} says:= ${message}`)
End Sub)
VB   C#

这个简单的客户端代码会连接到集线器,并监听任何信息广播。

运行中的实时功能

发送信息

使用我们之前的客户端和服务器端代码片段,发送信息就变得简单了。服务器和客户端都可以启动通信。

从服务器端

await Clients.All.SendAsync("ReceiveMessage", "Server", "Hello from server!");
await Clients.All.SendAsync("ReceiveMessage", "Server", "Hello from server!");
Await Clients.All.SendAsync("ReceiveMessage", "Server", "Hello from server!")
VB   C#

还有客户:

connection.send("SendMessage", "Client", "Hello from client!");
connection.send("SendMessage", "Client", "Hello from client!");
connection.send("SendMessage", "Client", "Hello from client!")
VB   C#

高级实时通信

ASP.NET Core SignalR 提供先进的实时通信功能:

1.分组连接:将连接的客户端划分为若干组,向特定组群广播信息。

2.处理断开连接:自动管理客户端连接和断开。

3.二进制协议SignalR 默认使用基于文本的协议,但也支持二进制协议。

使用 Azure SignalR 服务的 SignalR

要实现可扩展的实时功能,请集成 Azure SignalR 服务.这种完全托管的服务支持大量同时连接,是高需求应用程序的理想选择。

集成 Azure SignalR 服务:

1.安装 Azure SignalR SDK.

2.使用 Azure 服务总线提供背板支持。

3.调整公共类启动,以使用 Azure SignalR。

public void ConfigureServices(IServiceCollection services)
{
    services.AddSignalR().AddAzureSignalR();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseAzureSignalR(routes =>
    {
        routes.MapHub<ChatHub>("/chatHub");
    });
}
public void ConfigureServices(IServiceCollection services)
{
    services.AddSignalR().AddAzureSignalR();
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseAzureSignalR(routes =>
    {
        routes.MapHub<ChatHub>("/chatHub");
    });
}
Public Sub ConfigureServices(ByVal services As IServiceCollection)
	services.AddSignalR().AddAzureSignalR()
End Sub

Public Sub Configure(ByVal app As IApplicationBuilder, ByVal env As IWebHostEnvironment)
	app.UseAzureSignalR(Sub(routes)
		routes.MapHub(Of ChatHub)("/chatHub")
	End Sub)
End Sub
VB   C#

利用高级 .NET 工具增强 SignalR

虽然 ASP.NET Core SignalR 为实时网络功能提供了出色的基础,但开发人员往往需要一些工具来增强整体体验和功能。这就是 Iron Suite 进入画面。

Iron Suite 是一套优质的 .NET 库,旨在为您的 ASP.NET Core 应用程序(包括使用 SignalR 的应用程序)增效。该套件中的每个产品都具有独特的功能,可确保提供更丰富的应用体验。让我们深入了解一下这些产品:

IronPDF

Signalr C#(如何为开发人员工作) 图 1

IronPDF SignalR 可让您在 .NET 应用程序中生成、编辑和读取 PDF 文件。想象一下将 SignalR 集成到团队实时协作文档的场景中。当有改动时,该文档可以即时转换为 PDF 文件,并将更新无缝推送到所有连接的客户端。SignalR 的实时功能与 IronPDF 的功能相结合,将彻底改变协作工具。

IronXL

Signalr C#(如何为开发人员工作) 图 2

在使用 Excel 电子表格时、 IronXL 是冠军。在商业环境中,电子表格发挥着至关重要的作用。将 SignalR 与 IronXL 结合在一起,意味着财务团队可以在预算表上实时工作,见证发生的变化。试想一下,来自不同部门的数据输入到一个集中的 Excel 表中,所有利益相关者都能实时更新。通过这种组合,实时通信和动态电子表格管理的融合成为现实。

IronOCR

Signalr C#(如何为开发人员工作) 图 3

光学字符识别 (光学字符识别) 已成为现代应用程序的主要功能。 IronOCR 使 .NET 开发人员能够从图像和文档中提取文本。将其与 SignalR 的实时功能相结合,可以改变游戏规则。考虑一个用户上传包含文本数据的图片的平台。一旦 IronOCR 对图片进行处理,SignalR 就会实时通知用户,从而使数据提取具有交互性和即时性。

IronBarcode

Signalr C#(如何为开发人员工作) 图 4

条形码是库存管理、票务系统等不可或缺的一部分。 IronBarcode 简化了条形码的创建和读取。现在,将其与 SignalR 集成到仓库管理系统中。当扫描物品时,库存会实时更新,通知相关客户库存水平,确保物流运作顺畅。

结论

Signalr C#(如何为开发人员工作) 图 5

ASP.NET Core SignalR 与 Iron Suite 的强大工具相融合,有望为开发人员和终端用户带来更高的体验。实时网络功能已不仅仅是通信,而是一种变革性的工具,与 Iron Suite 等合适的资源搭配,可以重新定义交互式应用程序。

值得注意的是 Iron Suite 提供的价值主张。每个产品许可证的起价都是"$liteLicense",为开发人员提供了一套高级功能。不过,如果您不确定是否要立即投入使用,每个产品都会慷慨地提供 免费试用.这样,您就可以在做出决定前试用这些功能。

如果您正在考虑集成多个工具,还有一个好消息:您可以 购买整套铁艺套房 只需两种产品的价格! 这不仅能确保您获得最高性价比,还能为您提供全面的工具包,彻底改变您的 ASP.NET Core SignalR 应用程序。

< 前一页
C# 真或假(开发人员如何使用)
下一步 >
C# SQLite(开发人员如何使用)

准备开始了吗? 版本: 2024.10 刚刚发布

免费NuGet下载 总下载量: 11,108,738 查看许可证 >