xindong / frontd Goto Github PK
View Code? Open in Web Editor NEW心动网络游戏通用网关
License: MIT License
心动网络游戏通用网关
License: MIT License
for {
conn, err := l.Accept()
if err != nil {
log.Fatal(err)
}
go handleConn(conn)
}
接受新连接失败,直接Fatal是不是不合适,已经建立传输的连接会断掉。
目前的设计是初始化连接时用换行文本协议,如果初始化失败则回发二进制的错误码。
我在想,既然初始化已经用到文本协议了,何不连状态码返回也一起用文本协议,反正状态码也没几个字节。
还有一点是连接成功没有成功对应的状态码返回。
如果连接成功失败都有文本的状态码返回,就可以比较方便的用telnet做测试,手工发送一条连接初始化信息,在telnet可以直接看到服务端回发什么数据。
另外,是否需要在开头加个协议版本号,方便将来协议升级向下兼容不同版本的客户端?
线上项目经常会需要用到pprof监控项目,建议添加pprof相关的命令接口或者用go自带的net/http/pprof
。
自己提供命令接口的好处是可以减少配置量少占用一个端口,用自带的net/http/pprof
的好处是工具配套全,不用自己再手工到服务器上下载pprof数据。
之前都是自己造轮子,但新项目上我倾向于用net/http/pprof
。
端口配置问题可以用+1的方式来省掉手工,比如frontd端口在1234,frontd的pprof接口就是1235。
看了一下github.com/Luzifer/go-openssl
这个库的代码,发现里面的接口设计不太合理,接收的参数使用string
类型内部再转成[]byte
使用,而调用者手头有[]byte
时还得转成string
给它,这样来回转换徒增数据拷贝次数。
建议把这个库的代码copy到项目里改改或者fork一个来改,参数统一用[]byte
,顺便也减少第三方库依赖。
frontd相对于后台服务器是作为客户端存在的,向后端服务器建立tunnel,单ip连接数应该受限于64k,代码中设置MaxOpenfile为1024 * 1024 * 1024有意义吗? 实际项目应用中没有碰到类似问题吗?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.