将SignalR与现有WebAPI端点集成

时间:2017-03-24 15:36:35

标签: c# .net push-notification signalr asp.net-web-api2

我有一个Web API端点,用于创建记录并在创建记录时发出成功的201 Created。

是否可以向独立的HTML / JS网页发送通知,表明在使用SignalR创建记录时会创建记录?

如何在Web API中创建此发布者以及如何从独立网页订阅该发布者?

1 个答案:

答案 0 :(得分:3)

是的 - 只要该浏览器与SignalR Hub有活动连接,就有可能。

您可以使用此代码作为起点。它假设您有一个名为MessageHub的SignalR Hub类。这会向all active SignalR clients广播一条消息。

[RoutePrefix("api/messaging")]
public class MessagingController : ApiController
{
    [Route("")]
    public void Post(Message message)
    {
        var notificationHub = GlobalHost.ConnectionManager.GetHubContext<MessageHub>();
        if (notificationHub != null)
        {
            try
            { 
               // create your record   
               notificationHub.Clients.All.creationSuccess(message);
            }
            catch (Exception ex)
            {
              // do a thing
            }
        }
    }
}

creationSuccess是客户端(JavaScript)上的函数的名称,它将处理您所引用的浏览器内部的通知。 Here's more information regarding the details of that