当前位置: 首页 > wzjs >正文

网站建设在哪里发布长春搜索引擎推广

网站建设在哪里发布,长春搜索引擎推广,郴州房产网,软件开发大学示例代码:https://download.csdn.net/download/hefeng_aspnet/90448094 介绍 构建实时应用程序已成为现代 Web 开发中必不可少的部分,尤其是对于通知、聊天系统和实时更新等功能。SignalR 是 ASP.NET 的一个强大库,可实现服务器端代码和客户…

示例代码:https://download.csdn.net/download/hefeng_aspnet/90448094 

介绍

        构建实时应用程序已成为现代 Web 开发中必不可少的部分,尤其是对于通知、聊天系统和实时更新等功能。SignalR 是 ASP.NET 的一个强大库,可实现服务器端代码和客户端 Web 应用程序之间的无缝实时通信。在本指南中,我们将介绍如何使用最少 API 和 SignalR 在 .NET Core 8 中创建实时通知,确保您的应用程序保持响应速度快且引人入胜。

为什么使用 SignalR?

    1、实时通信:它支持实时更新,这对于聊天系统、游戏、现场体育更新和协作应用程序等现代动态应用程序至关重要。
    2、简化开发: SignalR提供了一个简单的API,抽象了实时通信的复杂性,使开发人员更容易实现这些功能。
    3、跨平台: SignalR 支持多个平台,包括 .NET、JavaScript 和 Xamarin,允许在不同类型的应用程序中广泛适用。
    4、自动重连: SignalR 在连接断开时处理自动重连,确保实时通信的可靠性。
    5、可扩展性: SignalR 具有可扩展性,可以与其他服务(如 Azure SignalR 服务)结合使用,后者可以处理扩展需求并提供高可用性。

创建 SignalR 服务器

安装

        首先,让我们安装 SignalR 包。您可以使用以下命令通过 Visual Studio 中的 NuGet 包管理器控制台执行此操作:

Install-Package Microsoft.AspNetCore.SignalR 

或者,您可以使用 NuGet 包管理器 UI 通过搜索“Microsoft.AspNetCore.SignalR”来安装它。 

创建 ASP.Net Core Web API 项目

步骤 1

打开 Visual Studio 并单击“创建新项目”。

第 2 步

选择 ASP.NET Core Web API 模板,如下图所示,然后单击下一步按钮。

步骤3

通过指定项目名称和要保存项目的位置来配置您的项目。

步骤4

选择您想要使用的.Net Core 框架版本,然后单击创建按钮。

步骤5

转到 Program.cs 并为 SignalR 添加服务

builder.Services.AddSignalR();

步骤6

添加类 StockHub.cs

using Microsoft.AspNetCore.SignalR;
namespace SignalRWebAPI
{
    public class StockHub:Hub
    {
        public async Task SendStockPrice(string stockName, decimal price)
        {
            await Clients.All.SendAsync("ReceiveStockPrice", stockName, price);
        }
        public override async Task OnConnectedAsync()
        {
            string connectionId = Context.ConnectionId;
            await base.OnConnectedAsync();
        }
    }
}

步骤7

转到 Program.cs 并映射 stockHub

app.MapHub<StockHub>("/hubs/stock");

步骤8

后台服务持续推送通知,添加类 Worker.cs

using Microsoft.AspNetCore.SignalR;

namespace SignalRWebAPI
{
    public class Worker : BackgroundService
    {
        private readonly ILogger<Worker> _logger;
        private readonly IHubContext<StockHub> _stockHub;
        private const string stockName = "Basic Stock Name";
        private decimal stockPrice = 100;

        public Worker(ILogger<Worker> logger, IHubContext<StockHub> stockHub)
        {
            _logger = logger;
            _stockHub = stockHub;
        }
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            while (!stoppingToken.IsCancellationRequested)
            {
                try
                {
                    _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);

                    Random rnd = new Random();
                    decimal stockRaise = rnd.Next(1, 10000);
                    //List of stock names
                    string[] stockNames = { "Apple", "Microsoft", "Google", "Amazon", "Facebook" };
                    //Random stock name
                   var stockName = stockNames[rnd.Next(0, stockNames.Length)];
                    //Send Notification
                    await _stockHub.Clients.All.SendAsync("ReceiveStockPrice", stockName, stockRaise);

                    _logger.LogInformation("Sent stock price: {stockName} - {stockRaise}", stockName, stockRaise);

                    await Task.Delay(4000, stoppingToken);
                }
                catch (Exception ex)
                {
                    _logger.LogError(ex, "Error sending stock price");
                }
            }
        }
    }
}

在 Program.cs 中添加此后台服务

builder.Services.AddHostedService<Worker>();

SignalR 接收器

服务器端

单独添加新的控制台项目或在同一个解决方案文件中添加。

从控制台应用程序的 Program.cs 中删除所有代码并粘贴以下代码。

using Microsoft.AspNetCore.SignalR.Client;
//here is SignalR Sender URL
string hubUrl = "https://localhost:7091/hubs/stock";
var hubConnection = new HubConnectionBuilder()
    .WithUrl(hubUrl)
    .Build();

// Register a handler for messages from the SignalR hub
// "ReceiveStockPrice" is the topic to which SignalR sending the singnals
hubConnection.On<string, decimal>("ReceiveStockPrice", (stockName, stockPrice) =>
{
    Console.WriteLine($"Message received--> Stock Name: {stockName} Stock Price: {stockPrice}");
});

try
{
    // Start the connection
    hubConnection.StartAsync().Wait();
    Console.WriteLine("SignalR connection started.");
}
catch (Exception ex)
{
    Console.WriteLine($"Error connecting to SignalR: {ex.Message}");
    throw;
}
//Create a cancellation token to stop the connection
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
//hubConnection.StopAsync().Wait();
var cancellationToken = cancellationTokenSource.Token;
// Handle Ctrl+C to gracefully shut down the application
Console.CancelKeyPress += (sender, a) =>
{
    a.Cancel = true;
    Console.WriteLine("Stopping SignalR connection...");
    cancellationTokenSource.Cancel();
};
try
{
    // Keep the application running until it is cancelled
    await Task.Delay(Timeout.Infinite, cancellationToken);
}
catch (TaskCanceledException)
{
}
// Stop the connection gracefully
await hubConnection.StopAsync();

Console.WriteLine("SignalR connection closed.");

客户端

Index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>SignalR Client</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/3.1.18/signalr.min.js"></script>
</head>
<body>
    <h1>Stock Prices</h1>
    <div id="stockPrices"></div>

    <script>
        const connection = new signalR.HubConnectionBuilder()
            .withUrl("https://localhost:7091/hubs/stock")
            .build();

        connection.on("ReceiveStockPrice", (stockName, stockPrice) => {
            const stockPricesDiv = document.getElementById("stockPrices");
            const newPrice = document.createElement("div");
            newPrice.textContent = `Stock received: ${stockName} - ${stockPrice}`;
            stockPricesDiv.appendChild(newPrice);
        });

        connection.start()
            .then(() => {
                console.log("SignalR connection started.");
            })
            .catch(err => {
                console.error("Error connecting to SignalR: ", err);
            });

        window.addEventListener("beforeunload", () => {
            connection.stop().then(() => {
                console.log("SignalR connection stopped.");
            }).catch(err => {
                console.error("Error stopping SignalR connection: ", err);
            });
        });
    </script>
</body>
</html>

现在可在 Web 和控制台应用程序上接收通知。

实现实时通知端点 

app.MapPost("sendStockNotification", async (
    string stockName,
    decimal price,
    IHubContext<StockHub> context) =>
{
    await context.Clients.All.SendAsync("ReceiveStockPrice", stockName, price);
}); 

当客户端向端点发送包含股票名称和价格的 POST 请求时sendStockNotification,此代码将实时向所有连接的客户端广播股票价格更新。客户端将通过"ReceiveStockPrice"其订阅的方法接收此更新。 

示例代码:https://download.csdn.net/download/hefeng_aspnet/90448094  

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。 


文章转载自:

http://4yOH5GSZ.rrpsw.cn
http://q3LIQW4M.rrpsw.cn
http://qJt1ip2T.rrpsw.cn
http://gOmXyQ8i.rrpsw.cn
http://GCXoXIXB.rrpsw.cn
http://8MWH1gla.rrpsw.cn
http://hpjeyVxY.rrpsw.cn
http://Wr8hC6tk.rrpsw.cn
http://R8IaoLym.rrpsw.cn
http://sSJn7Czk.rrpsw.cn
http://5SpbKCBK.rrpsw.cn
http://6le2rCGO.rrpsw.cn
http://vRU18irp.rrpsw.cn
http://jR4QGUR2.rrpsw.cn
http://lTTYJjxY.rrpsw.cn
http://nCF0Cdsa.rrpsw.cn
http://5xAlbgS9.rrpsw.cn
http://I59fRM4H.rrpsw.cn
http://qrwfer5H.rrpsw.cn
http://19YTGmmt.rrpsw.cn
http://XjlBxEMa.rrpsw.cn
http://M8z31zrD.rrpsw.cn
http://8JIgzpmw.rrpsw.cn
http://1zVIwNVh.rrpsw.cn
http://1nMqPeUg.rrpsw.cn
http://KHu1C1Vv.rrpsw.cn
http://PrWOOMPW.rrpsw.cn
http://URjU01jA.rrpsw.cn
http://s3ozG7a7.rrpsw.cn
http://jQ7cU9WY.rrpsw.cn
http://www.dtcms.com/wzjs/648101.html

相关文章:

  • 做网站一天忙吗苏州个人网站制作
  • 提供网站建设公司电话江苏建站管理系统开发
  • 公众号视频网站怎么做河南建设工程一体化
  • 网站建设丿金手指稳定flash可以让网页动起来
  • 如何做网站站长网络营销模式不是孤立存在的
  • 外汇网站建设广西核心关键词seo报价
  • 自然资源网站建设方案jetpack wordpress
  • 网站建设与设计方案余姚的网站建设
  • 网站怎么做宣传微信 网站建设
  • 网站开发武胜招聘十大黄冈网站排行榜
  • 常州市新北区城乡建设局网站公司注册app流程下载
  • 中英文网站建设价格wordpress调用会员等级
  • 深圳建设网站费用SEO网站建设全方位部署
  • 广东建设继续教育网站山西中宇建设集团网站
  • wordpress建立的网站吗wordpress视频无法播放视频播放
  • 安徽省工程建设信息网网站有那个网站可以做免费的投票
  • 酒水食品做的好网站长沙经开区建设局网站
  • 做网站买什么品牌笔记本好企业注册邮箱的步骤
  • 怎么建好网站wordpress加入代码行
  • 有什么网站是做办公家具重庆网站建设行业新闻
  • 为什么企业要建设自己的企业文化金昌网站seo
  • 企业建设网站有哪些做网站价格ihanshi
  • 国外h5制作网站优质网站建设服务
  • 做网站看什么书好做网站免费的域名
  • 建设网站如何赚钱php和wordpress
  • 邯郸做网站最好的公司官方网站平台下载
  • 南宁企业建站程序广告营销公司
  • 烟台网站建设求职简历seo平台有哪些
  • 网站安全建设思考h5个人网页制作
  • 网站建设客户需求深圳建设厅官方网站