是否可以创建一个Webhook接收器,只要某些记录插入数据库(由Web作业监控),该接收器就会监听Azure Web作业通知?一旦Web钩子收到通知,UI就需要向用户发出通知。
由于Sumit Saini没有发布他们的代码,我将使用.Net Core添加我为conference presentation编写的代码。原始代码从Event Grid接收事件,但很容易修改为使用简单的webhook。
控制器定义一个端点来接收事件并将其传递给SignalR:
[ApiController]
[Produces("application/json")]
public class EventHandlerController : Controller
{
private readonly IHubContext<NotificationHub> _hubContext;
public EventGridEventHandlerController(IHubContext<NotificationHub> hubContext)
{
_hubContext = hubContext;
}
[HttpPost]
[Route("api/EventHandler")]
public IActionResult Post([FromBody]object request)
{
object[] args = { request };
_hubContext.Clients.All.SendCoreAsync("SendMessage", args);
Console.WriteLine(truck);
return Ok();
}
}
集线器类中没有任何特殊代码 - 您只需将其定义为正常:
public class NotificationHub : Hub
{
public async Task SendMessage(Message message)
{
await Clients.All.SendAsync("Notification", message);
}
}
客户端也是标准的SignalR实现。
您可以在这里找到更通用的SignalR教程:https://docs.microsoft.com/en-us/aspnet/core/tutorials/signalr?view=aspnetcore-2.2&tabs=visual-studio
您也可以使用SignalR as a service或Notification Hub来实现此结果。