SuperSocket 1.4系列文档(5) 实现你的Socket命令
大部分的业务逻辑代码应该放在Command里面。Command会由SuperSocket引擎根据收到的CommandInfo的Key来自动的执行。
例如,客户端向SuperSocket发送一个以ECHO为Key的Command时, 如
"ECHO I love you\r\n",
名为ECHO的Command就会被执行。
Echo命令定义如下:
public class ECHO : StringCommandBase<EchoSession>
{
#region CommandBase<EchoSession> Members
public override void ExecuteCommand(EchoSession session, StringCommandInfo commandInfo)
{
session.SendResponse(commandInfo.Data);
}
#endregion
}
(注意,命令类必须为public)
当SuperSocket引擎收到一个以"ECHO"为Key的StringCommandInfo时,ECHO命令类的ExecuteCommand方法会被自动的执行。
如果你在你的协议里面定义了自己的CommandInfo类型,你应该基于CommandBase<SessionType, CommandInfoType>来创建Command:
public class ECHO : CommandBase<EchoSession, MyCommandInfo>
{
#region CommandBase<EchoSession> Members
public override void ExecuteCommand(EchoSession session, MyCommandInfo commandInfo)
{
session.SendResponse(commandInfo.Data);
}
#endregion
}
在某些情况下,你的CommandInfo的key必须为16进制数字构成的字符串或者其它不能用来作为类名的字符串,此时,你可以override Command类的Name属性用于匹配command info的 key:
public class ECHO : CommandBase<EchoSession, MyCommandInfo>
{
public override string Name
{
get { return "0A"; }
}
#region CommandBase<EchoSession> Members
public override void ExecuteCommand(EchoSession session, MyCommandInfo commandInfo)
{
session.SendResponse(commandInfo.Data);
}
#endregion
}
在ExecuteCommand方法之中,你可以使用session实例来发送数据到客户端,你也可以通过session.AppServer语句来访问AppServer,然后用AppServer的属性和方法来实现你的业务逻辑。
public override void ExecuteCommand(EchoSession session, MyCommandInfo commandInfo)
{
var appServer = session.AppServer;
//Your business logics
//Send data to client
session.SendResponse(commandInfo.Data);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架