SuperSocket 1.4系列文档(6) 在AppSession和Commands中访问AppServer

在AppSession和Commands中访问AppServer很方便,示例代码如下:

public class YourSession : AppSession<YourSession>
{
    public override void StartSession()
    {
        SendResponse("Welcome to " + AppServer.Name);   
    }
 
    public override void HandleExceptionalError(Exception e)
    {
        
    }
}
public class STOP : StringCommandBase<EchoSession>
{
    #region CommandBase<EchoSession> Members
 
    public override void ExecuteCommand(EchoSession session, StringCommandInfo commandInfo)
    {
        session.AppServer.Stop();
    }
 
    #endregion
}

虽然你可以访问AppServer的最基本接口所定义的属性和方法,但是你没有办法访问你自己实现的AppServer的方法和属性。你可以直接将AppServer转化成你自己的AppServer类型来解决这个问题,不过SuperSocket为你提供了更方便的解决方法。

你可以用new关键字来重写AppSession基类的AppServer属性,代码如下:

public class BroadcastSession : AppSession<BroadcastSession>
{
    public string DeviceNumber { get; set; }
 
    public new BroadcastServer AppServer
    {
        get { return (BroadcastServer)base.AppServer; }
    }
 
    public override void HandleExceptionalError(Exception e)
    {
        
    }
}

这样你就可以在AppSession或者Commands之中直接访问你自己定义的AppServer的功能了。

public class BROA : StringCommandBase<BroadcastSession>
{
    public override void ExecuteCommand(BroadcastSession session, StringCommandInfo commandData)
    {
        string message = commandData.Data;
        session.AppServer.BroadcastMessage(session, message);
        session.SendResponse("101 message broadcasted");
    }
}
posted @   江大渔  阅读(3251)  评论(2编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示