javascript - 当你在signalR中更改页面时如何保存连接

标签 javascript asp.net-mvc signalr signalr-hub

我在更改页面时无法保存连接。我有一个页面显示房间列表,第二页显示聊天 View 。当我加入带有房间列表的页面时,它会在连接时加入方法,当我选择要加入哪个房间后,它会转到 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

关于javascript - 当你在signalR中更改页面时如何保存连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30738174/

相关文章:

asp.net-mvc - ASP.NET MVC - 以一种形式处理多个对象

c# - 调试,未找到源,未找到 AsyncExtensions.cs

asp.net-mvc - 找不到 VS2013 浏览器链接 "The controller for path '/9ac086a69364466a841e03e001f946fd/arterySignalR/ping'。”

javascript - amcharts V4 在饼图中选择时重定向到 URL

asp.net-mvc - ASP.NET MVC 中的访问键

javascript - 如何在网页上保持 SignalR 连接?

c# - 通过 SignalR Core 访问数据库上下文

javascript - 在 datalist 控件中调用 jquery 函数

javascript - 从空集合中获取查询快照文档长度

javascript - 访问自定义元素 Shadow dom 的子元素