asp.net core之实时应用

这篇具有很好参考价值的文章主要介绍了asp.net core之实时应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文将介绍ASP.NET Core SignalR,这是一个强大的实时通信库,用于构建实时、双向通信应用程序。我们将探讨SignalR的基本概念、架构和工作原理,并提供一些示例代码来帮助读者更好地理解和使用SignalR。
ASP.NET Core SignalR提供了一种简单而强大的方式来构建实时通信应用程序。SignalR支持多种传输方式,包括WebSockets、Server-Sent Events和长轮询,以确保在各种环境下实现实时通信。

SignalR基础知识

SignalR是一个开源的ASP.NET Core库,用于构建实时、双向通信应用程序。它允许服务器端代码主动向客户端推送数据,而不需要客户端发起请求。SignalR提供了一种简单的编程模型,使开发人员可以轻松地实现实时通信功能。
在使用SignalR之前,我们需要了解一些核心概念:

  • Hub:Hub是SignalR的核心组件,它负责处理客户端和服务器之间的通信。开发人员可以定义自己的Hub类,并在其中定义可以由客户端调用的方法。
  • 连接:连接表示客户端与服务器之间的连接。每个连接都有一个唯一的连接ID,用于标识特定的客户端。
  • 客户端:客户端是使用SignalR库的应用程序的一部分。客户端可以是Web浏览器、移动应用程序或其他支持SignalR的客户端。
  • 传输:传输是指SignalR用于在客户端和服务器之间传输数据的方式。SignalR支持多种传输方式,包括WebSockets、Server-Sent Events和长轮询。

SignalR架构和工作原理

SignalR的架构由以下几个核心组件组成:

  • 服务器:服务器端负责处理客户端的连接、消息传递和状态管理。
  • 客户端:客户端负责与服务器建立连接,并接收来自服务器的消息。
  • 传输:传输层负责在客户端和服务器之间传输数据。SignalR支持多种传输方式,可以根据环境自动选择最佳的传输方式。


SignalR的工作原理可以概括为以下几个步骤:

  1. 客户端发起连接请求。
  2. 服务器接受连接请求,并为该连接分配一个唯一的连接ID。
  3. 客户端与服务器建立连接。
  4. 客户端和服务器通过连接ID进行通信。
  5. 服务器可以主动向客户端推送消息。
  6. 客户端可以调用服务器端的方法。

使用SignalR构建实时应用程序

为了更好地理解和使用SignalR,我们将通过一个简单的示例来演示如何构建一个实时聊天应用程序。
首先,我们需要创建一个ASP.NET Core Web应用程序。可以使用Visual Studio或者命令行工具创建一个新的ASP.NET Core项目。
在ASP.NET Core高版本中AspNetCore.App默认已经内置了SingalR,直接就可以使用。

创建一个ASP.NET Core空模板,接下来,我们需要创建一个继承自Hub类的Hub。在这个Hub中,我们将定义可以由客户端调用的方法。以下是一个简单的示例:

using Microsoft.AspNetCore.SignalR;

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

        public override async Task OnConnectedAsync()
        {
            Console.WriteLine($"{Context.ConnectionId} Connected");
            await Clients.Caller.SendAsync("ReceiveMessage", "System", "Hello");
        }
    }
}


在Program.cs文件中,我们需要配置SignalR中间件。添加以下代码:

using LearnSignalR;
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddSignalR();

var app = builder.Build();

app.MapHub<ChatHub>("/chat");

app.MapGet("/", () => "Hello World!");

app.Run();

创建一个Console控制台项目测试连接SignalR Hub。需要安装Microsoft.AspNetCore.SignalR.Client的Nuget包。
在客户端,我们可以使用JavaScript来连接到SignalR Hub,并与服务器进行通信。以下是一个简单的示例:

using Microsoft.AspNetCore.SignalR.Client;

var connection = new HubConnectionBuilder()
    .WithUrl("http://localhost:5192/chat")
    .Build();

connection.On<string, string>("ReceiveMessage", (user, message) =>
{
  var newMessage = $"{user}: {message}";
  Console.WriteLine($"{DateTime.Now}---{newMessage}");
});
await connection.StartAsync();

Thread.Sleep(int.MaxValue);

现在,我们可以运行应用程序。当一个客户端连接时立马会受到服务端发出的信息。
asp.net core之实时应用
接下来改造一下控制台程序,使它可以发送消息。

using Microsoft.AspNetCore.SignalR.Client;

var connection = new HubConnectionBuilder()
    .WithUrl("http://localhost:5192/chat")
    .Build();

connection.On<string, string>("ReceiveMessage", (user, message) =>
{
    var newMessage = $"{user}: {message}";
    Console.WriteLine($"{DateTime.Now}---{newMessage}");
});
await connection.StartAsync();
Console.WriteLine("SetName:");
var userName = Console.ReadLine();
while (true)
{
    Console.WriteLine("Message:");
    var message = Console.ReadLine();
    await connection.InvokeAsync("SendMessage", userName, message);
}

测试效果。可以看到客户端正常接收和发送消息。
asp.net core之实时应用

总结

本文详细介绍了ASP.NET Core SignalR的基本概念、架构和工作原理,并通过一个实时聊天应用程序的示例演示了如何使用SignalR构建实时应用程序。SignalR提供了一种简单而强大的方式来实现实时通信,可以在各种应用场景中发挥作用。通过深入了解SignalR,开发人员可以更好地利用其功能来构建实时、双向通信的应用程序。

欢迎进群催更。

asp.net core之实时应用文章来源地址https://www.toymoban.com/news/detail-623778.html

到了这里,关于asp.net core之实时应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ASP.NET Core】使用SignalR推送服务器日志

    一个多月前接手了一个产线机器人项目,上位机以读写寄存器的方式控制机器人,服务器就是用 ASP.NET Core 写的 Web API。由于前一位开发者写的代码质量问题,导致上位机需要16秒才能启动。经过我近一个月的改造,除了保留业务逻辑代码,其他的基本重写。如今上位机的启动

    2024年02月03日
    浏览(60)
  • ASP.NET Core SignalR 系列(四)- 中心筛选器

    本章将和大家分享 ASP.NET Core SignalR 中的中心筛选器。 本文大部分内容摘自微软官网:https://learn.microsoft.com/zh-cn/aspnet/core/signalr/hub-filters?view=aspnetcore-7.0 废话不多说,下面我们直接进入本章主题。 中心筛选器: 在 ASP.NET Core 5.0 或更高版本中可用。 允许在客户端调用中心方法之

    2024年02月16日
    浏览(46)
  • ASP.NET Core+Vue3 实现SignalR通讯

    从ASP.NET Core 3.0版本开始,SignalR的Hub已经集成到了ASP.NET Core框架中。因此,在更高版本的ASP.NET Core中,不再需要单独引用Microsoft.AspNetCore.SignalR包来使用Hub。 在项目创建一个类继承Hub, 首先是写一个CreateConnection方法 ConnectionId是SignalR中标识的客户端连接的唯一标识符, 将userId和

    2024年02月06日
    浏览(43)
  • ASP.NET Core SignalR 系列(三)- JavaScript 客户端

    本章将和大家分享 ASP.NET Core SignalR 中的 JavaScript 客户端。ASP.NET Core SignalR JavaScript 客户端库使开发人员能够调用服务器端SignalR中心代码。 本文大部分内容摘自微软官网:https://learn.microsoft.com/zh-cn/aspnet/core/signalr/javascript-client?view=aspnetcore-7.0tabs=visual-studio 废话不多说,下面我们

    2024年02月15日
    浏览(52)
  • 微信小程序如何使用原生Websocket与Asp.Net Core SignalR 通信

    如题,这可能算是.net 做小程序的服务端时,绕不开的一个问题,老生常谈了。同样的问题,我记得我2018/19年的一个项目的解决方案是: 修改官方的SignalR.js的客户端 :把里面用到浏览器的Websocket改成微信小程序的官方api的。目前网上也有不少这样的方案,已经改好开源了;

    2024年02月08日
    浏览(62)
  • Web SSH 的原理与在 ASP.NET Core SignalR 中的实现

    有个项目,需要在前端有个管理终端可以 SSH 到主控机的终端,如果不考虑用户使用 vim 等需要在控制台内现实界面的软件的话,其实使用 Process 类型去启动相应程序就够了。而这次的需求则需要考虑用户会做相关设置。 这里用到的原理是伪终端。伪终端(pseudo terminal)是现

    2024年02月07日
    浏览(64)
  • 微信小程序如何使用原生Websocket api与Asp.Net Core SignalR 通信

    如题,这可能算是.net 做小程序的服务端时,绕不开的一个问题,老生常谈了。同样的问题,我记得我2018/19年的一个项目的解决方案是: 修改官方的SignalR.js的客户端 :把里面用到浏览器的Websocket改成微信小程序的官方api的。目前网上也有不少这样的方案,已经改好开源了;

    2024年02月09日
    浏览(74)
  • 服务端使用ASP.NET Core SignalR与Vue3(TypeScript与JavaScript)前端建立通信(以进度条为例)

    1. ASP.NET Core           ASP.NET Core 是一个跨平台、高性能及开源的框架,用于生成基于云且连接互联网的新式应用程式。 官方文档:ASP.NET documentation | Microsoft Learn  2.  ASP.NET Core SignalR         ASP.NET Core SignalR 是开源库,用于服务端与客户端建立实时通信,可以自动管理连接

    2024年02月06日
    浏览(48)
  • ASP.NET Core 中使用 WebSocket 协议进行实时通信

    介绍 在 ASP.NET Core 中使用 WebSocket 协议创建实时通信的完整示例涉及几个步骤。在此示例中,我们将创建一个简单的聊天应用程序,用户可以在其中实时发送和接收消息。此示例假设您对 ASP.NET Core 和 C# 有基本了解。 步骤1.创建一个新的ASP.NET Core项目 首先,使用 Visual Studio 或

    2024年01月25日
    浏览(51)
  • ASP.NET Core MVC -- 将视图添加到 ASP.NET Core MVC 应用

    右键单击“视图”文件夹,然后单击“添加”“新文件夹”,并将文件夹命名为“HelloWorld”。 右键单击“Views/HelloWorld”文件夹,然后单击“添加”“新项”。 在“添加新项 - MvcMovie”对话框中: 在右上角的搜索框中,输入“视图” 选择“Razor 视图 - 空” 保持“名称”框的

    2024年02月13日
    浏览(91)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包