gpt4 book ai didi

angular - SignalRCore - 无法获取更新的数据。 - 使用定时器管理器

转载 作者:行者123 更新时间:2023-12-03 14:48:32 24 4
gpt4 key购买 nike

我正在学习如何实现信号器。我引用了一个教程LINK并在没有数据库连接的情况下创建了示例应用程序,该应用程序运行良好。

技术 - SinalRCore、Entityframework 核心、Dontnet 核心 API、Angular 8

在没有数据库连接的情况下,SingalR 能够更新我发送到 angular 的数据。我可以毫无问题地看到更改后的数据。

当我尝试从数据库中获取数据时,我正在获取数据,但是当我在数据库中进行更新时,更新并未反射(reflect)在我得到的结果 json 中。

我正在使用一个空集线器。
使用一个计时器,每 2 秒触发一次。

这是我的 API 操作。

namespace MyUtilities.Controllers
{

[Route("api/[controller]")]
[ApiController]
public class AlertsController : ControllerBase
{
private IHubContext<AlertHub> _hub;
private readonly FolderContext dbContext;

public AlertsController(IHubContext<AlertHub> hub,FolderContext Context )
{
_hub = hub;
dbContext= Context;
}

public IActionResult Get()
{
var res = dbContext.Folder.Join(dbContext.FilterCount,
f => f.lFolderId,
e => e.lFolderId,
(f, e) => new
{
lFolderId = f.lFolderId,
sTileName = f.sMnemonic,
Icon = f.sIcon,
Count = e.lNewCount
})
.GroupBy(f => new { f.sTileName, f.Icon, f.lFolderId }).Select(x => new { Count = x.Sum(f => f.Count), x.Key.lFolderId, x.Key.Icon, x.Key.sTileName }).ToList();
var timerManager = new TimerManager(() => _hub.Clients.All.SendAsync("transferalertdata", res));


return Ok(new { Message = "Request Completed" });

}

}
}

以上述方式使用上下文有什么问题吗?

最佳答案

When I tried to fetch the data from database I am getting the data, but when I do an updated in the database, the update is not reflecting in the resultant json I am getting.

var timerManager = new TimerManager(() => _hub.Clients.All.SendAsync("transferalertdata", res));


在您的 AlertsController ,我们可以发现,当数据到达 Get时,您只检索了一次数据。 action,然后将其分配给变量 res ,然后在 TimerManager回调函数,您只需将检索到的/旧数据发送到所有连接的 SignalR 客户端,而不是再次从数据库中获取更新的数据,因此即使您提供的回调函数每两秒执行一次,连接的 SignalR 客户端也只会收到旧数据。
另外,如果您在回调函数(或定时任务)的代码逻辑中进行数据库查询,请注意会频繁执行(每两秒一次),可能会对您的数据库服务器造成不良影响。因此,如果可能,您可以尝试仅在某些用户对数据库执行更新操作时调用/触发“SignalR BroadCast”功能。

关于angular - SignalRCore - 无法获取更新的数据。 - 使用定时器管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57961871/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com