# socket-quickstart **Repository Path**: jason_elva8325/socket-quickstart ## Basic Information - **Project Name**: socket-quickstart - **Description**: 基于Go官方类库建立的Socket服务样例 - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2018-10-16 - **Last Updated**: 2024-12-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # socket-quickstart #### 项目介绍 基于Go官方类库建立的Socket服务样例 #### 软件架构 - config (TOML 格式配置文件解析组件) - processors (业务数据处理程序,利用 golang 的 plugin 模式实现) - protocol (通讯协议定义) - cmd - message-server (短连接服务端指令) - message-client (短连接客户端指令) - file-server (长连接服务端指令) - file-client (长连接客户端指令) - \_test\_files (用于长连接服务测试的文件) - primary.xml (文件资源库索引文件) #### 软件流程图 ![bootstrap](bootstrap.png) ![message_access_flow](message_access_flow.png) ![file_access_flow](file_access_flow.png) #### 安装方法 git clone https://gitee.com/jason_elva8325/socket-quickstart.git #### 命令及参数 ```sh Usage of message-server: -conf-file string Host path of TOML format config file. If this param set, other params will be lose efficacy -conn-timeout duration TCP connect timeout (default 1s) -listen-host string TCP listen host (default "0.0.0.0") -processor-dir string Processor files store location -tcp-ca-cert string TCP root cert file -tcp-cert string TCP cert file -tcp-key string TCP cert key file -tcp-port string TCP listen port (default "3333") -verify-client-cert Force verify client certification ``` ```sh Usage of file-server: -conf-file string Host path of TOML format config file. If this param set, other params will be lose efficacy -conn-timeout duration TCP connect timeout (default 1s) -listen-host string TCP listen host (default "0.0.0.0") -piece-size int piece per file byte size, must be between 256 and 8192 (default 512) -processor-dir string Processor files store location -resource-dir string directory where resource files locate -tcp-ca-cert string TCP root cert file -tcp-cert string TCP cert file -tcp-key string TCP cert key file -tcp-port string TCP listen port (default "3333") -verify-client-cert Force verify client certification ``` ##### 使用说明 1. -conf-file 参数如果一旦设定,则其它参数均不起作用,TOML 配置文件样例,详见 config 目录 4. -processor-dir 参数如果不设置,则默认为命令所在目录 5. -http-cert 和 -http-key 参数必须成对设置,才能启用 SSL 6. -verify-client-cert 参数只有 SSL 启用后设置才有效 7. -verify-client-cert 参数如果设置为 `false`,则客户端调用时不需要使用客户端证书密钥对;如果为 `true` 则必须使用客户端证书密钥对进行调用 8. -http-ca-cert 参数仅当 HTTP SSL 证书为私有自签名证书时,才有必要指定 9. -resource-dir 参数如果不设置,则默认为命令所在目录 #### Processor 编写要求 1. 必须在 processors 目录下建立新的目录,且不能再包含子目录,该目录名称将作为 processor 文件的文件名 2. processor 的目录下必须建立 main.go 文件,该文件内要求 package 必须为 main,且必须继承 `func ProcessorRegistry(router map[string]func([]byte, *log.Logger, ...interface{}) ([]byte, error))` 和 `func Process(message []byte, logger *log.Logger, ...interface{}) ([]byte, error)` 方法,详见 processors 目录下的样例程序 3. 使用 processors 目录下的 gen.sh 文件编译生成 processor 文件。该脚本的使用方法如下:`gen.sh all` 代表构建所有 processors`gen.sh [processor 目录名]` 代表构建指定的 processor #### Command 构建脚本说明 使用 cmd 目录下的 gen.sh 脚本构建命令文件。该脚本的使用方法如下:`gen.sh all` 代表构建所有 Command,`gen.sh [command 目录名]` 代表构建指定的 command,构建生成的命令文件名同 `[command 目录名]` #### 依赖条件 无 #### 其它说明 无