-
Notifications
You must be signed in to change notification settings - Fork 77
i_zh_可选配置
huangjizhong edited this page Nov 4, 2023
·
7 revisions
app.setConfig(key: "rpc", value: I_rpcConfig);
interface I_rpcConfig {
/**
* 超时时间(秒,大于 5 则使用,默认 10)
*/
"timeout"?: number,
/**
* 消息包最大长度(默认 10 MB)
*/
"maxLen"?: number,
/**
* 消息发送频率(毫秒,大于 10 则启用,默认立即发送)
*/
"interval"?: number | { "default": number, [serverType: string]: number }
/**
* 是否开启Nagle算法(默认不开启)
*/
"noDelay"?: boolean,
/**
* 心跳(秒,大于 5 则使用,默认 60)
*/
"heartbeat"?: number,
/**
* 重连间隔(秒,默认 2)
*/
"reconnectDelay"?: number,
/**
* 不建立socket连接的矩阵
*/
"noRpcMatrix"?: { [serverType: string]: string[] },
/**
* rpc 消息缓存长度(默认 5000)
*/
"rpcMsgCacheCount"?: number,
/**
* 当开启 interval 时,为防止单次Buffer申请过大,可配置此值作为立即发送的阈值(默认 +Infinity)
*/
"intervalCacheLen"?: number,
/**
* rpc调用发生错误时,记录堆栈(注意:会影响性能,建议开发模式开启,生产环境关闭。默认关闭。)
*/
"errStack"?: boolean,
}
-
timeout
为rpc调用时的超时时间。 -
interval
为服务器间的socket消息发送频率,可针对服务器类型进行配置。 -
noRpcMatrix
默认情况下每两个服务器之间都会建立socket连接。当两个服务器类型之间无需通信时,可以通过此配置阻止建立连接。
app.setConfig(key: "connector", value: I_connectorConfig);
interface I_connectorConfig {
/**
* 自定义connector类(默认tcp)
*/
"connector"?: I_connectorConstructor,
/**
* 心跳(秒,默认无)
*/
"heartbeat"?: number,
/**
* 最大连接数(默认无上限)
*/
"maxConnectionNum"?: number,
/**
* 消息包最大长度(默认 10 MB)
*/
"maxLen"?: number
/**
* 是否开启Nagle算法(默认不开启)
*/
"noDelay"?: boolean,
/**
* 消息发送频率(毫秒,大于 10 则启用,默认立即发送)
*/
"interval"?: number,
/**
* 客户端连接通知
*/
"clientOnCb"?: (session: Session) => void,
/**
* 客户端离开通知
*/
"clientOffCb"?: (session: Session) => void,
[key: string]: any,
}
-
connector
前端服务器监听clientPort
的连接服务,框架内置两种:tcp
和ws
(ws时,如果要使用 ssl 证书, 可以添加配置{"ssl": true, "cert": cert, "key": key}
)。开发者还可以自定义连接服务。 -
clientOnCb
客户端连接成功的回调 -
clientOffCb
客户端断开连接的回调 -
cmdFilter
消息过滤器,在protoDecode
后被调用。可用于防止客户端消息发送过于频繁。
app.setConfig(key: "encodeDecode", value: I_encodeDecodeConfig);
interface I_encodeDecodeConfig {
/**
* 协议编码
*/
"protoEncode"?: (cmd: number, msg: any) => Buffer,
/**
* 消息编码
*/
"msgEncode"?: (cmd: number, msg: any) => Buffer,
/**
* 协议解码
*/
"protoDecode"?: (data: Buffer) => { "cmd": number, "msg": Buffer },
/**
* 消息解码
*/
"msgDecode"?: (cmd: number, msg: Buffer) => any,
}
- 客户端来的数据经过
protoDecode
解码出消息号cmd
和具体的消息字节流msg
,msg
会被传到msgDecode
解码出具体的消息内容。 - 向客户端发消息时,
protoEncode
将消息号和具体的消息内容编码出字节流,该字节流被直接发送到客户端。所以msgEncode
是被包含在protoEncode
函数中的。 - 可参考数据流向图。
app.setConfig(key: "ssh", value: string[]);
-
master
服启动其他物理机上的服务器时的ssh配置
app.setConfig(key: "recognizeToken", value: I_recognizeTokenConfig);
interface I_recognizeTokenConfig {
/**
* 服务器内部认证密钥
*/
"serverToken"?: string,
/**
* master与cli的认证密钥
*/
"cliToken"?: string,
}
-
serverToken
是服务器间建立连接时的认证密钥,防止非法连接。 -
cliToken
是mydog命令行与master服务器建立连接时的认证密钥,防止非法连接。
setConfig(key: "logger", value: (level: "debug" | "info" | "error", msg: string) => void);
- 框架内部会将相关日志通过此配置传给开发者。
app.setConfig(key: "mydogList", value: () => { "title": string, "value": string }[]);
-
mydog list
时添加自定义显示的内容。
setConfig(key: "onBeforeExit", value: (cb: () => void) => void): void;
- 在收到
mydog remove/removeT/stop
命令时,会触发此回调。
setConfig(key: "onMydogSend", value: (args: string[], cb: (data: any) => void) => void): void;
- 接收
mydog send
发来的消息。