获取会话的连接和断开事件

关键字: 连接, 会话, 连接事件, 断开事件

通过 host builder 的方法 ConfigureSessionHandler 注册 session 的连接和断开处理代码

builder.UseSessionHandler((s) =>
    {
        // 会话连接建立后的逻辑
    },
    (s, e) =>
    {
        // s: 当前会话
        // e: 会话关闭事件参数
        // e.Reason: 会话关闭原因

        // 会话连接断开后的逻辑
    });

通过扩展应用程序会话类型来处理会话事件

定义你自己的应用程序会话类型,然后在重写(override)方法内处理会话事件:

public class MyAppSession : AppSession
{
    protected override ValueTask OnSessionConnectedAsync()
    {
        // 会话连接建立后的逻辑
    }

    protected override ValueTask OnSessionClosedAsync(CloseEventArgs e)
    {
        // 会话连接断开后的逻辑
    }
}

通过HostBuilder来启用你扩展的应用程序会话类型:

hostBuiler.UseSession<MyAppSession>();

通过扩展 SuperSocket 服务来处理会话事件

定义你的 SuperSocket 服务类型然后重写会话事件处理方法:

    public class GameService<TReceivePackageInfo> : SuperSocketService<TReceivePackageInfo>
        where TReceivePackageInfo : class
    {
        protected override ValueTask OnSessionConnectedAsync(IAppSession session)
        {
            // 会话连接建立后的逻辑
        }

        protected override ValueTask OnSessionClosedAsync(IAppSession session, CloseEventArgs e)
        {
            // 会话连接断开后的逻辑
        }
    }

当你在创建 SuperSocket 服务宿主的时候使用你定义的 SuperSocket 服务类型:

    builder.UseHostedService<GameService<StringPackageInfo>>();