如何在 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
如何将两个数组作为 POST 请求参数从 AJAX 发送到 MVC 控制器(ASP .NET Core 3.1 剃须刀)?
ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 25. 过滤器