如何在 ASP.NET Core MVC 中请求和显示实时 Web api 数据?

Posted

技术标签:

【中文标题】如何在 ASP.NET Core MVC 中请求和显示实时 Web api 数据?【英文标题】:How to request and display real-time web api data in ASP.NET Core MVC? 【发布时间】:2022-01-09 09:05:44 【问题描述】:

我正在使用CoinGecko api 获取 ASP.NET Core MVC Web 应用程序中几种加密货币的实时价格数据。 CoinGecko 的价格数据每 1-10 分钟更新一次,所以我想大概每 5 分钟请求一次价格数据。我希望数据在客户端刷新,这样用户就不必刷新页面来查看最新数据。我希望这些数据显示在折线图中。

我想确保我在正确地思考这个问题,所以这是我目前的思考过程:

我可以使用SignalR在客户端和服务器之间创建一个开放的连接,这样客户端就不必刷新来获取coingecko api数据。我之所以选择 SignalR,是因为它会根据情况选择最佳传输技术,而我对 websocket、长轮询等知之甚少。

就显示这些数据而言,我决定使用Highcharts 库,因为它很容易学习。

所以本质上我的问题是,我如何以设定的时间间隔获取实时 Web api 数据并将其显示在图表中而无需刷新客户端?我的思维过程正确吗?

任何有用的见解或文章链接将不胜感激。我不太确定该怎么做,所以我想确保我没有浪费时间。

【问题讨论】:

【参考方案1】:

您可以尝试创建预定的Background tasks with hosted services。然后,您还可以使用 Cronos 包和 Cron Expressions 来配置计划任务,并将 Cron 表达式设置为在特定日期范围内运行任务或每 5 分钟运行一次 Schedule Job。

有关创建计划任务的更多详细信息,请参阅How can I execute a method every year using BackgroundService in ASP.NET core Application?。

然后,在任务中,你可以调用CoinGecko api获取最新数据,然后,inject an instance of IHubContext调用客户端方法将数据发送给客户端并显示出来。

【讨论】:

以上是关于如何在 ASP.NET Core MVC 中请求和显示实时 Web api 数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何继续等待 API 请求响应值完成 ASP .Net Core MVC

基础教程:ASP.NET Core 2.0 MVC筛选器

如何将两个数组作为 POST 请求参数从 AJAX 发送到 MVC 控制器(ASP .NET Core 3.1 剃须刀)?

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 25. 过滤器

如何在 asp net core 2.2 中间件中多次读取请求正文?

ASP.NET Core MVC 之控制器(Controller)