在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
现代网络依赖于交互性和实时反馈。 在构建响应式应用程序时,实时网络功能是必须的。这正是 SignalR 的优势所在。 ASP.NET Core SignalR是一个库,它能让您在应用程序中添加实时网络功能变得比您想象的还要简单。
在本教程中,我们将了解 SignalR 的基础知识和细微差别。 让我们深入了解!
ASP.NET Core SignalR 提供了一个 API,用于使用 WebSockets 和其他技术(如服务器发送的事件)创建实时网络功能。 不仅限于 ASP.NET Core。 您可以在各种客户端(如浏览器或移动应用程序)上使用 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
在公有类 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
SignalR 用途广泛。虽然本教程侧重于ASP.NET Core 和 JavaScript 客户端库,但 SignalR 支持从 .NET 到 Java 的各种客户端。
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>
现在,您可以连接到集线器:
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)
这个简单的客户端代码会连接到集线器,并监听任何信息广播。
使用我们早期的客户端和服务器端代码片段,发送信息非常简单。 服务器和客户端均可启动通信。
来自服务器端:
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!")
还有客户:
connection.send("SendMessage", "Client", "Hello from client!");
connection.send("SendMessage", "Client", "Hello from client!");
connection.send("SendMessage", "Client", "Hello from client!")
ASP.NET Core SignalR 提供先进的实时通信功能:
分组连接:将已连接的客户端划分为若干组,向特定组群广播消息。
处理断开连接:自动管理客户端连接和断开连接。
为实现可扩展的实时功能,请集成Azure SignalR 服务. 这项完全托管的服务支持大量的同时连接,因此非常适合高需求应用程序。
集成 Azure SignalR 服务:
使用 Azure 服务总线提供背板支持。
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
虽然 ASP.NET Core SignalR 为实时网络功能提供了出色的基础,但开发人员经常会寻找一些工具来增强整体体验和功能。 这就是Iron Software Suite 库进入图片。
Iron Suite for .NET 是一套优质的 .NET 库,旨在为您的 ASP.NET Core 应用程序(包括使用 SignalR 的应用程序)增效。 该套件中的每个产品都具有独特的功能,可确保提供更丰富的应用体验。 让我们深入了解这些产品:
了解有关 IronPDF 功能的更多信息您可以在 .NET 应用程序中生成、编辑和读取 PDF 文件。 想象一下将 SignalR 集成到团队实时协作文档的场景中。在进行修改时,文档可以即时转换为 PDF,并将更新无缝推送到所有连接的客户端。 SignalR 的实时功能与 IronPDF 的功能相搭配,可以彻底改变协作工具。
在使用 Excel 电子表格时、探索 IronXL 功能是冠军。 在商业环境中,电子表格起着至关重要的作用。 将 SignalR 与 IronXL 结合在一起,意味着财务团队可以实时处理预算表,见证发生的变化。 想象一下这样一种场景:来自不同部门的数据输入到一个集中的 Excel 表中,并为所有利益相关者提供实时更新。 通过这种组合,实时通信和动态电子表格管理的融合成为现实。
光学字符识别(光学字符识别)在现代应用程序中,".NET"、"Python "和 "Node.js "已成为主要术语。 查看 IronOCR 的运行情况.NET.NET "使 .NET 开发人员能够从图像和文档中提取文本。 将其与 SignalR 的实时功能相结合,可以改变游戏规则。 考虑用户上传包含文本数据的图片的平台。 一旦 IronOCR 处理了图像,SignalR 就可以用来实时通知用户,使数据提取具有交互性和即时性。
BarCode 在库存管理、票务系统等方面不可或缺。 了解 IronBarcode 功能简化了条形码的创建和读取。 现在,考虑将其与 SignalR 集成到仓库管理系统中。 在扫描商品时,库存会实时更新,通知相关客户库存水平,确保物流运作顺畅。
ASP.NET Core SignalR 与 Iron Suite 的强大工具相融合,有望为开发人员和终端用户带来更高的体验。 实时网络功能变得不仅仅是交流,而是一种变革性的工具,与 Iron Suite 等合适的资源搭配,可以重新定义交互式应用程序。
值得注意的是 Iron Suite 提供的价值主张。每个产品许可证的起价为 $749,为开发人员提供了一系列高级功能。 不过,如果您不确定是否需要立即投入,每个产品都会慷慨地提供一个免费试用 Iron Software 产品. 这样,您就可以在做出决定前试用这些工具的功能。
如果您正在考虑集成多种工具,还有一个好消息:您可以购买整个 Iron Suite 以获得附加值只需两种产品的价格! 这不仅能确保您获得最佳性价比,还能为您配备一套全面的工具包,彻底改变您的 ASP.NET Core SignalR 应用程序。