CMDP协议
CMDP(Command Prompt Protocol)协议
是iswork
框架的专有协议,灵感来自HTTP协议。CMDP协议主要解决iswork
框架与外部数据传输时的统一规范性,目前作用在iswork
(web worker)与ui界面
(主线程)的数据交互上,未来可在点对点网络传输上发挥重用作用。
CMDP地址
CMDP地址结构分为以下部分:
协议
:协议固定为cmdp
。用户账号
:当前用户的账号。限制:1-20个字符,字符类型包括字母和下划线。应用域路径
:指定访问具体哪个应用,有嵌套应用域的应用需要用.
分开。限制:路径名1-20个字符,字符类型包括字母和下划线,路径最少1层,最多5层。端口号
:由于一台电脑可以运行多个命令窗口,端口可以用来指定具体哪个命令窗口。限制:数字,0<=端口<=9999方法路径名
:应用下的方法路径名,在iswork
里一般指控制器类的名称。限制:路径名1-20个字符,字符类型包括字母和下划线。处理方法名
:处理该消息的方法名,在iswork
里一般指控制器类的方法名称。限制:路径名1-20个字符,字符类型包括字母和下划线。
协议地址结构:
text
[协议]://@[用户账号].[应用域路径]:[端口号]/[方法路径名].[处理方法名]
正则表达式校验:
text
/^cmdp:\/\/@\\w{1,20}(\\.[\\w]{1,20}){1,5}:[0-9]{1,4}\/[\\w]{1,20}\.[\\w]{1,20}$/
示例:
text
cmdp://@guest.global:1/cmdRoute.list
消息结构
请求
meta
:请求的描述信息,类似HTTP的header头,一般与业务数据无关的数据都应该放在meta里。payload
:请求的业务数据,类似HTTP的body,需要传递的业务数据放在body里。
响应
meta
: 请求的描述信息,类似HTTP的header头,一般与业务数据无关的数据都应该放在meta里。payload
:响应的业务数据,类似HTTP的body,需要传递的业务数据放在body里。
协议实现
请参考@istock/iswork
库里面的cmdp实现,具体源码路径在iswork/src/cmdp
。