扩展你的 AppSession 和 SuperSocketService
Keywords: SuperSocketService, AppSession
什么是 AppSession?
AppSession 代表一个和客户端的逻辑连接,基于连接的操作应该定于在该类之中。你可以用该类的实例发送数据到客户端,接收客户端发送的数据或者关闭连接。
什么是 SuperSocketService?
SuperSocketService 代表了监听所有客户端连接的服务器实例,宿主所有连接。 应用程序级别的操作和业务逻辑可以定义在里面。
扩展你的 AppSession
-
重写 AppSession 的操作
public class TelnetSession : AppSession { protected override async ValueTask OnSessionConnectedAsync() { // do something right after the sesssion is connected } protected override async ValueTask OnSessionClosedAsync(EventArgs e) { // do something right after the sesssion is closed } }
-
你也可以根据业务需要给你的 AppSession 添加新的属性 让我们创建一个可以用与游戏服务器的一个 AppSession:
public class PlayerSession :AppSession { public int GameHallId { get; internal set; } public int RoomId { get; internal set; } }
-
在你的 SuperSocket 服务中采用你的 AppSession 通过builder来注册你的 AppSession 类型
builder.UseSession<MySession>();
创建你自己的 SuperSocket Service
-
扩展 SuperSocketService 并按照你的需要重写操作:
public class GameService<TReceivePackageInfo> : SuperSocketService<TReceivePackageInfo> where TReceivePackageInfo : class { public GameService(IServiceProvider serviceProvider, IOptions<ServerOptions> serverOptions) : base(serviceProvider, serverOptions) { } protected override async ValueTask OnSessionConnectedAsync(IAppSession session) { // do something right after the sesssion is connected await base.OnSessionConnectedAsync(session); } protected override async ValueTask OnSessionClosedAsync(IAppSession session) { // do something right after the sesssion is closed await base.OnSessionClosedAsync(session); } protected override async ValueTask OnStartedAsync() { // do something right after the service is started } protected override async ValueTask OnStopAsync() { // do something right after the service is stopped } }
-
开始使用你自己的 Serivce 类型 通过 builder 注册你的 service 类型:
builder.UseHostedService<GameService
>();