我决定在我的页面上使用 SignalR 进行聊天。当用户单击放置在 _Layout.cshtml 中的“进入聊天”链接时,会打开聊天页面。这工作正常。但是,我想要实现的是以下功能:
- 在页面的左侧,我希望有某种“在线用户”区域,当一个用户登录时,其他已经登录的用户将能够看到一个新用户刚刚进入该页面。
- 在线用户只需点击他们的名字就可以互相聊天
我正在使用以下代码连接到聊天应用程序:
$(function () {
//declare a proxy to reference the hub
var chatHub = $.connection.chatHub;
registerClientMethods(chatHub);
//Start Hub
$.connection.hub.start().done(function () {
registerEvents(chatHub);
chatHub.server.connect(@User.Identity.Name);
});
});
但是,当我将此代码放在我的 _Layout.cshtml 页面中时,用户每次浏览页面时都会永久注销并再次连接(它们打算在 _Layout.cshtml 中打开)。浏览页面时有什么方法可以保持与集线器的连接?使用此类功能时的最佳实践是什么?