caiyuzheng 368e49ff71 | ||
---|---|---|
.vscode | ||
config | ||
handler | ||
logger | ||
model | ||
network | ||
protocol | ||
test | ||
tools/mq | ||
util | ||
vendor | ||
zk | ||
.gitignore | ||
Dockerfile | ||
README.md | ||
TcpServConfig.json | ||
deploy.bat | ||
go.mod | ||
go.sum | ||
k8s.deploy.yaml | ||
main.go | ||
restart.sh |
README.md
介绍
tcp流转包服务端框架。。
this repo is desperated...looks like websocket can do it natually.
特性
功能:
提供连接数管理,支持熔断,热重启。
支持 context 化回调机制。
支持分布式,和主节点选举。
主节点的作用 心跳包支持。 服务端推送支持。
可选并行回调或者同步回调方式。
并行回调就是异步回调,回调不保证执行得有序性。 同步回调一定会在上个回调函数执行完毕后执行。
How to use
package main
import (
"flag"
"tcptemplate/config"
"tcptemplate/logger"
"tcptemplate/network"
"log"
)
func main() {
var confPath string
flag.StringVar(&confPath,"conf_path","TcpServConfig.json","the path of configuration file")
flag.Parse()
config.InitConfig(confPath)
//network.SetHandler(handler.HandlePack)
server := network.ServerFactory(config.Configs().Ipadress)
server.SetHandler(nil)
log.Print("start " + config.Configs().Type + " server " + "at address " + config.Configs().Ipadress)
e := server.Run()
if nil != e {
logger.LogDebugError(e.Error())
}
}
server 服务实例
server.SetHandler 设置处理句柄
server.Run() 服务启动
包头格式文档(Package format)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0x40 | 0x41 | length[3] | length[2]
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| length[1] | length[0] | verify |
包头格式 7 个字节,首个字节标识符 40 41 ,然后包长度,最后是 verify 是包头长度的校验和
secure tcp
secure tcp 提供了类似于 tls,ssl 的机制的安全 tcp 连接,流程如下