zoukankan      html  css  js  c++  java
  • SuperSocket命令和命令加载器

    关键字: 命令, 命令加载器, 多命令程序集

    命令 (Command)

    SuperSocket 中的命令设计出来是为了处理来自客户端的请求的, 它在业务逻辑处理之中起到了很重要的作用。

    命令类必须实现下面的基本命令接口:

    public interface ICommand<TAppSession, TRequestInfo> : ICommand

        where TRequestInfo : IRequestInfo

        where TAppSession : IAppSession

    {

        void ExecuteCommand(TAppSession session, TRequestInfo requestInfo);

    }

    public interface ICommand

    {

        string Name { get; }

    }

    请求处理代码必须被放置于方法 "ExecuteCommand(TAppSession session, TRequestInfo requestInfo)" 之中,并且属性 "Name" 的值用于匹配接收到请求实例(requestInfo)的Key。当一个请求实例(requestInfo) 被收到时,SuperSocket 将会通过匹配请求实例(requestInfo)的Key和命令的Name的方法来查找用于处理该请求的命令。

    举个例子, 如果你收到如下请求(requestInfo):

    Key: "ADD"

    Body: "1 2"

    于是 SuperSocket 将会寻找Name属性为"ADD"的命令。如果有个命令定义如下:

    public class ADD : StringCommandBase

    {

        public override void ExecuteCommand(AppSession session, StringRequestInfo requestInfo)

        {

              session.Send((int.Parse(requestInfo[0] + int.Parse(requestInfo[1])).ToString());

        }

    }

    因为基类 StringCommandBase 会设置Name属性的值为此类的名称(ADD),因此个命令将会被找到.

    但是在有些情况, 请求实例(requestInfo)的Key 无法当做类的名称。 比如说:

    Key: "01"

    Body: "1 2"

    为了让让你的 ADD 命令起作用,你需要为命令类重写Name属性:

    public class ADD : StringCommandBase

    {

        public override string Name

        {

            get { return "01"; }

        }

        public override void ExecuteCommand(AppSession session, StringRequestInfo requestInfo)

        {

              session.Send((int.Parse(requestInfo[0] + int.Parse(requestInfo[1])).ToString());

        }

    }

  • 相关阅读:
    在Electron中最快速预加载脚本
    Babel是什么?
    node、npm、chrome、v8、sandbox是什么?
    我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
    NN[神经网络]中embedding的dense和sparse是什么意思?
    记一次失败的docker排障经历
    paddlepaddle关于使用dropout小案例
    paddlepaddle如何预加载embedding向量
    最近在部署推荐系统环境时,遇到一个很奇葩都问题
    fluid.io.load_inference_model 载入多个模型的时候会报错 -- [paddlepaddle]
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11126772.html
Copyright © 2011-2022 走看看