У меня проблема с сохранением соединения, пока я меняю страницу. У меня есть одна страница, на которой отображаются список комнат и вторая страница с видом чата. Когда я присоединяюсь к странице со списком комнат, она соединяется с методом connect, после того, как я выбираю, в какую комнату присоединиться, он переходит к ondisconnected, затем JoinGroups, а затем к методу Onconnect. Скажите, пожалуйста, как сделать одно соединение с обеими страницами?Как сохранить соединение при смене страницы в сигналеR
Здесь Javasсript-chathub:
$(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);
});
}
И Connect метод:
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);
}
До тех пор, пока вы меняете страницы, вы не можете. Либо сделайте его выделенной вдовой (возможно, всплывающим?), Либо превратите весь свой сайт в одностраничное приложение (где все содержимое загружается через ajax). –
@BradChristie благодарит за ответ, превратит его в одну страницу. – Vitaliy