在 signalR 中更改页面时如何保存连接

How to save connection when u change page in signalR

我在更改页面时无法保存连接。我有一页显示房间列表,第二页显示聊天视图。当我加入带有房间列表的页面时,它会在连接上加入方法,当我选择要加入的房间后,它会转到 ondisconnected,然后是 JoinGroups,然后是 Onconnect 方法。请告诉我如何使一个连接到两个页面?

这里是chathub的javascript:

$(function () {

    // Declare a proxy to reference the hub. 
    var chatHub = $.connection.ChatHub;

    registerClientMethods(chatHub);

    // Start Hub
    $.connection.hub.start().done(function () {
        roomsEvent(chatHub);

        authorize(chatHub);

        registerEvents(chatHub);

    });

});

function authorize(hub) {
    var name = $('#txtMessage').prop('Placeholder');
    hub.server.connect(name);
    $('#displayname').val(name);
    messageClearFocus();
    $('#txtMessage').prop('placeholder', '');
}

function roomsEvent(hub) {
    $('#rooms ul li').not('.nav-header').click(function () {

        $('#rooms ul li').not('.nav-header').removeClass('active');
        $(this).addClass('active');
        var roomKey = $(this).data('value');
        hub.server.joinGroup(roomKey);
    });
}

和连接方法:

public void Connect(string userName)
        {
            userName = Context.User.Identity.Name;
            if (ConnectedUsers.Any(x => x.ConnectionId == Context.ConnectionId))
                return;

            //Add a new user to the list
            var user = new ChatUser
            {
                ConnectionId = Context.ConnectionId,
                userLogin = userName
            };

            //Add to maintained user list
            ConnectedUsers.Add(user);

            //Add to default group
            //await 
            Groups.Add(user.ConnectionId, user.CurrentGroup);

            //Give the current group an updated list of users
            UpdateGroupUserList(user.CurrentGroup);

            //Alert others that user joined
            var message = string.Format("{0} has joined.", user.userLogin);
            SendGroupAlert(user, message);

            //Alert user that they have joined
            var personalMessage = string.Format("You have joined {0} as {1}.", user.CurrentGroup, user.userLogin);
            SendPersonalAlert(personalMessage);
        }

如果他们必须切换页面来保持连接,那是不可能的。您可以做的就是将所有内容都放在一页下。参见 here