作者:Mihai Criveti 一个使用Go语言编写的最小服务,通过标准输入输出(stdio)、HTTP/JSON-RPC或**服务器发送事件(SSE)**来流式传输或返回当前的UTC时间。
stdio、http(JSON-RPC 2.0)和ssemain.appVersion、main.buildDate设置make crossgolangci-lint、staticcheck)和预提交钩子hey支持负载测试git clone https://github.com/yourorg/fast-time-server.git
cd fast-time-server
# 通过标准输入输出构建并运行
make run
# 在8080端口上通过HTTP JSON-RPC运行
make run-http
# 在8080端口上通过SSE运行
make run-sse
需要Go 1.23+。
go install github.com/yourorg/fast-time-server@latest
也可以从发布页面下载。
| 标志 | 默认值 | 描述 |
|---|---|---|
-transport | stdio | 选项:stdio、http、sse、dual |
-addr/-listen | 0.0.0.0 | 绑定HTTP/SSE的地址 |
-port | 8080 | HTTP/SSE/dual的端口 |
-auth-token | (空) | SSE认证的Bearer令牌 |
POST /http
请求:
{"jsonrpc":"2.0","method":"Time.Now","id":1}
响应:
{"jsonrpc":"2.0","result":"2025-06-21T12:34:56Z","id":1}
GET /sse(可选头部:Authorization: Bearer <token>)
每秒输出一次UTC时间戳:
data: 2025-06-21T12:34:56Z
安装流行的HTTP负载测试工具hey:
brew install hey # macOS
wget https://hey-release... # Linux预编译二进制文件
运行快速负载测试:
# 总计500次请求,50个并发,HTTP传输
hey -n 500 -c 50 http://localhost:8080/http
生成详细的CSV输出用于分析:
hey -n 1000 -c 100 -o csv http://localhost:8080/http > 结果.csv
make docker-build
make docker-run # HTTP模式
make cross
二进制文件会出现在dist/fast-time-server-<os>-<arch>目录下。
| 任务 | 命令 |
|---|---|
| 格式化及整理 | make fmt tidy |
| 检查及验证 | make lint staticcheck vet |
| 运行预提交钩子 | make pre-commit |
make test # 单元测试(竞态检测)
make coverage # HTML覆盖率报告
make bench # Go基准测试