向SignalR中的集线器类之外的所有客户端广播

时间:2016-04-12 15:47:58

标签: javascript oauth-2.0 signalr asp.net-web-api2

我有一个公开一些REST方法的ASP.NET Web API。客户端浏览器使用登录屏幕使用API​​进行身份验证。当其他客户端使用API​​进行身份验证时,我想向所有客户端广播消息(javascript警报)。客户端无需在服务器上调用方法,只需服务器调用客户端上的单个方法即可显示Javascript警报。

My Hub课程:

public class MyHub : Hub
{
  public void BroadcastMessage(string userName)
  {
    Clients.All.notify(userName);
  }
}

在我的CustomOAuthProvider类中进行用户身份验证:

if (userAuthenticated)
{
    var signalRContext = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
    signalRContext.Clients.All.notify(context.UserName);
}

这是我的index.html文件及相关脚本:

<script src="scripts/jquery-2.2.2.min.js"></script>
<script src="scripts/jquery.signalR-2.2.0.js"></script>
<script src="http://localhost:49834/signalr/hubs"></script>
<script>
(function ($) {
    $(function () {
        var hubProxy = $.connection.myHub;
        hubProxy.client.notify = function (username) {
            alert(username + ' has logged in');
        };
        $.connection.hub.start();
    });
})(jQuery);
</script>

请注意,动态生成的SignalR Hubs脚本的路径为localhost:49834。这是我的网络API的网址。我包含这个是因为客户端在Node.js http-server中运行,并且不是ASP.NET Web Api项目的一部分。

当我运行此操作时,控制台上没有任何错误,也没有警报。我用一个用户登录然后打开一个单独的浏览器并与第二个用户登录。我不确定为什么我没有使用经过身份验证的用户名获取Javascript Alert

0 个答案:

没有答案