欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

SuperSocket 1.5 Documentation译文 2 ----- 实现你的AppServer和AppSession

发布时间:2025/3/21 编程问答 69 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。