2015-06-09 3 views
0

У меня проблема с сохранением соединения, пока я меняю страницу. У меня есть одна страница, на которой отображаются список комнат и вторая страница с видом чата. Когда я присоединяюсь к странице со списком комнат, она соединяется с методом 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); 
     } 
+2

До тех пор, пока вы меняете страницы, вы не можете. Либо сделайте его выделенной вдовой (возможно, всплывающим?), Либо превратите весь свой сайт в одностраничное приложение (где все содержимое загружается через ajax). –

+0

@BradChristie благодарит за ответ, превратит его в одну страницу. – Vitaliy

ответ

0

Это не представляется возможным, если они должны переключать страницы, чтобы поддерживать связь. То, что вы можете сделать, это все это под одной страницей. См. here

Смежные вопросы