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

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

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

  1. builder.UseSessionHandler((s) =>
  2. {
  3. // 会话连接建立后的逻辑
  4. },
  5. (s, e) =>
  6. {
  7. // s: 当前会话
  8. // e: 会话关闭事件参数
  9. // e.Reason: 会话关闭原因
  10. // 会话连接断开后的逻辑
  11. });

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

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

  1. public class MyAppSession : AppSession
  2. {
  3. protected override ValueTask OnSessionConnectedAsync()
  4. {
  5. // 会话连接建立后的逻辑
  6. }
  7. protected override ValueTask OnSessionClosedAsync(CloseEventArgs e)
  8. {
  9. // 会话连接断开后的逻辑
  10. }
  11. }

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

  1. hostBuiler.UseSession<MyAppSession>();

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

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

  1. public class GameService<TReceivePackageInfo> : SuperSocketService<TReceivePackageInfo>
  2. where TReceivePackageInfo : class
  3. {
  4. protected override ValueTask OnSessionConnectedAsync(IAppSession session)
  5. {
  6. // 会话连接建立后的逻辑
  7. }
  8. protected override ValueTask OnSessionClosedAsync(IAppSession session, CloseEventArgs e)
  9. {
  10. // 会话连接断开后的逻辑
  11. }
  12. }

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

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