|
本帖最后由 dunce 于 2021-7-16 02:03 编辑
不得不说自从开始自学编程以后,每次放长假都能给自己找到事情做。这玩意我本来是打算当插件写的,用来扩展我上个寒假写的科学工具。后来又觉得还是做成独立的工具比较方便(装本地或者装中转机都可以),还能光明正大地开源出来给其他人用骗star。
目前框架已经差不多定下了,从头到尾都用静态派发,尽量保证协议之间可以自由搭配,同时获得比较好的静态检查和编译优化。(模板满天飞,写的时候越发的觉得手上的梯子档次不行。不过毕竟那会才刚学编程没几个月,姿势水平不够,只会玩玩go js py 以及现学现卖的qt. 等我写完这个程序,再把梯子和图形客户端全部重写一遍)
已经支持的协议有:
[ol]tcpunix socketwebsocket over tcpwebsocket over uds[/ol]复制代码
在linux机器上tcp或者uds可以零拷贝
后面会加上tls/h2/quic,支持自定义headers。
配置文件暂时长这样
[ol]{ "dns_mode": "ipv4_only", "endpoints": [ { "listen": { "addr": "127.0.0.1:5000", "net": "tcp", "trans": { "proto": "plain" } }, "remote": { "addr": "~/Downloads/uds.sock", "net": "uds", "trans": { "proto": "ws", "path": "ws://127.0.0.1:10000/test" #这里以后会改成path+headers } } }, { "listen": { "addr": "~/Downloads/uds.sock", "net": "uds", "trans": { "proto": "ws", "path": "/test" } }, "remote": { "addr": "127.0.0.1:15000", "net": "tcp", "trans": { "proto": "plain" } } } ]}[/ol]复制代码
[tcp->ws over uds -> tcp]
在我机器上能跑16Gbs (单独ws也差不多;tcp和uds因为零拷贝的缘故,可以跑到40Gbs)
以后配置文件会支持toml,可能我还会单独实现个配置文件编辑器。
仓库地址: https://github.com/zephyrchien/midori 文档以后再补吧。。看个番睡觉去了 |
|