Asp.Net SignalR第二个选项卡不会触发onConnected事件

时间:2018-04-11 08:28:55

标签: asp.net signalr signalr-hub signalr.client

我刚刚使用signalR创建了一个示例项目。我只是想测试管理多个连接。当我打开第一个浏览器并加载页面时,一切都按预期工作。它将在集线器上触发OnConnected事件。但是,当我打开另一个浏览器或不同的选项卡并加载页面时,它不会再触发OnConnected事件。它显示了$ .connection.hub.id。

这是中心

[HubName("genie")]
public class Genie : Microsoft.AspNet.SignalR.Hub
{
    private static ConnectionManager _manager = new ConnectionManager();

    [HubMethodName("AdminCommand")]
    public void AdminCommand(string command, string message = "")
    {
        var connetions = _manager.GetConnections();

        connetions.Remove(Context.ConnectionId);

        Clients.Clients(connetions).onAdminCommand(command, message);
    }

    public override Task OnConnected()
    {
        _manager.AddConnection(Context.ConnectionId);

        return base.OnConnected();
    }

    public override Task OnDisconnected(bool stopCalled)
    {
        _manager.RemoveConnection(Context.ConnectionId);

        return base.OnDisconnected(stopCalled);
    }
}

这是javascript代码:

var proxy = $.connection.genie;

        $.connection.hub.start()
                .done(function (state) {
                    console.log($.connection.hub.id);
                });

        proxy.on('onAdminCommand', function (command, message) {
            if (command == "HappyGenie") {
                $scope.goTo("happy/");
            } else if (command == "SadGenie") {
                $scope.goTo("sad/");
            } else if (command == "CustomAnnouncement") {
                dataService.setDataByKey("Announcement", message);
                $scope.goTo("customannouncement/");
            }
        });

我与生成的代理建立连接。

我做错了吗?

由于

0 个答案:

没有答案