SuperSocket 1.5 Documentation译文 2 ----- 实现你的AppServer和AppSession
什么是AppSession?
AppSession表示逻辑socket连接,基于连接的操作应在该类中定义。您可以使用这个类的实例,将数据发送到TCP客户端,接收数据连接或关闭连接。
什么是AppServer?
AppServer表示监听所有客户端连接的服务端实例。在理想的情况下,我们可以从AppServer得到我们想找到的任何会话。它应该被定义在应用程序级别的操作和逻辑里。
创建你的 AppSession
您可以重写基类AppSessions的业务
public class TelnetSession : AppSession<TelnetSession> {protected override void OnSessionStarted(){this.Send("Welcome to SuperSocket Telnet Server");}protected override void HandleUnknownRequest(StringRequestInfo requestInfo){this.Send("Unknow request");}protected override void HandleException(Exception e){this.Send("Application error: {0}", e.Message);}protected override void OnSessionClosed(CloseReason reason){//添加在会话关闭后你的业务逻辑代码base.OnSessionClosed(reason);} }
在上面的代码中,客户端连接上的时候服务端发送欢迎消息,这段代码也重写了其他用来处理我们自己逻辑的方法。
根据业务需求你可以为你的会话添加一个新的属性,创建一个将用于游戏服务端的AppSession
public class PlayerSession :AppSession<PlayerSession> {public int GameHallId { get; internal set; }public int RoomId { get; internal set; } }
关于命令
在第一份文档中,我们讨论了有关命令,现在我们在这里修改了一点:
public class ECHO : CommandBase<AppSession, StringRequestInfo> {public override void ExecuteCommand(AppSession session, StringRequestInfo requestInfo){session.Send(requestInfo.Body);} }
在该命令的代码中,你应该已经发现,父类是CommandBase,其中有一个泛型类型参数AppSession。这是的默认AppSession。如果你想使用新的AppSession,把你的AppSession类型作为参数传递,否则服务器无法解析你的命令:
public class ECHO : CommandBase<PlayerSession, StringRequestInfo> {public override void ExecuteCommand(PlayerSession session, StringRequestInfo requestInfo){session.Send(requestInfo.Body);} }
创建你的 AppServer
如果你想使用你的AppSession作为会话,你必须修改你的AppServer来使用它:
public class TelnetServer : AppServer<TelnetSession> {}现在 TelnetSession 将可以用在 TelnetServer 的会话中。
这里也有很多保护类方法你可以重写
public class TelnetServer : AppServer<TelnetSession> {protected override bool Setup(IRootConfig rootConfig, IServerConfig config){return base.Setup(rootConfig, config);}protected override void OnStartup(){base.OnStartup();}protected override void OnStopped(){base.OnStopped();} }
优点
允许你根据业务需求拓展的SuperSocket来实现你的AppSession和App Server,你也可以看到会话的连接事件和关闭事件,服务器的启动和停止事件。
在服务端的Setup()方法中,您也可以读取自己定制的配置,总之,它有很多功能,而这正是你需要很容易创建的一个socket服务器。
转载于:https://www.cnblogs.com/idoudou/articles/2863447.html
《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读总结
以上是生活随笔为你收集整理的SuperSocket 1.5 Documentation译文 2 ----- 实现你的AppServer和AppSession的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Silverlight - Out of
- 下一篇: Gentoo - X11 forward