如何检测到客户端关闭了Blazor服务器端的浏览器(Web套接字连接已关闭)?

时间:2019-10-02 10:38:22

标签: blazor blazor-server-side

我正在尝试检测客户端何时与Blazor服务器端应用断开连接;这可能等于关闭Web套接字连接。您能建议一种在服务器端检测此类事件的方法吗?

1 个答案:

答案 0 :(得分:0)

我研究了ASP.NET Core 3.0的功能,并测试了当用户离开组件或关闭浏览器时,确实有可能检测到事件。正确的开发模式是在文件后面使用Razor代码:

AddressBase.razor.cs:

public class AddressBase : ComponentBase, IDisposable
{
        void IDisposable.Dispose()
        {
            Console.WriteLine("Disposing AddressBase.");
        }
}

AddressBase.razor:

@page "/address"
@inherits AddressBase

<h1>Address component</h1>

将为当前显示的所有组件触发Dispose()函数。

我必须强调一个好的功能-在浏览器显示组件时,处理该组件中的动作时不会调用Dispose()方法(例如,用户使用此组件内部的控件来触发服务器端事件) 。因此,很容易从始终显示的某些父控件或主控件中正确检测出我们需要的实际事件。