我决定在我的页面上使用SignalR进行聊天。当用户点击位于_Layout.cshtml内的“Enter Chat”链接时,将打开聊天页面。这很好用。但是,我想要实现的是以下功能:
我使用以下代码连接到聊天应用程序:
$(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中打开)。 在浏览页面时是否有任何方法可以与集线器保持连接?使用此类功能时的最佳做法是什么?
答案 0 :(得分:3)
每当您离开页面或以任何方式刷新页面内容时,您都需要启动新的SignalR连接。在浏览页面时,有两种方法可以处理此行为:
现在深入了解#2的更多细节。您的站点上的用户可能会在每次转换到新页面时断开/连接,但您可以通过服务器端逻辑控制他们注销或断开连接的方式。您可以通过在服务器端代码中保留一组“在线”用户,然后仅在指定的超时值后离线考虑它们来获得此功能。