84 lines
2.0 KiB
Markdown
84 lines
2.0 KiB
Markdown
# OmniSocketGo
|
||
|
||
Linux only. Go 1.22.
|
||
|
||
如果目标机器只运行 `server`,只需要编译并拷贝 `server` 二进制。
|
||
如果目标机器只运行 `peer`,只需要编译并拷贝 `peer` 二进制。
|
||
|
||
`go build ./cmd/server` 和 `go build ./cmd/peer` 会把各自依赖到的功能一起编译进最终二进制,不需要再单独编译 `cmd/internal/...` 包。
|
||
|
||
- `server` 二进制会包含它依赖到的转发、协议、传输等代码
|
||
- `peer` 二进制会包含它依赖到的注册、交互发送、接收落盘、协议、传输等代码
|
||
- 只有没有被这个可执行程序引用的其他命令,才不在该二进制里,比如 `cmd/latencysummary`
|
||
|
||
## Build
|
||
|
||
按目标架构分别编译。
|
||
mkdir -p bin
|
||
go build -o bin/server ./cmd/server
|
||
go build -o bin/peer ./cmd/peer
|
||
go build -o bin/latencysummary ./cmd/latencysummary
|
||
|
||
### Linux amd64
|
||
|
||
```bash
|
||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o bin/server-linux-amd64 ./cmd/server
|
||
```
|
||
|
||
### Linux arm64
|
||
|
||
```bash
|
||
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o bin/peer-linux-arm64 ./cmd/peer
|
||
```
|
||
|
||
### Linux armv7
|
||
|
||
```bash
|
||
CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build -o bin/server-linux-armv7 ./cmd/server
|
||
CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build -o bin/peer-linux-armv7 ./cmd/peer
|
||
```
|
||
|
||
|
||
|
||
## Run On Different Machines
|
||
|
||
`server` 所在机器监听 `0.0.0.0:9000`。
|
||
|
||
```bash
|
||
~/omnisocket/server -listen 0.0.0.0:9000
|
||
```
|
||
|
||
每个 `peer` 所在机器连接 `server` 的实际 IP,例如 `192.168.1.50:9000`。
|
||
|
||
### peer-a
|
||
|
||
```bash
|
||
~/omnisocket/peer \
|
||
-id peer-a \
|
||
-server 192.168.1.50:9000 \
|
||
-inbox-dir /tmp/peer-a-inbox
|
||
```
|
||
|
||
### peer-b
|
||
|
||
```bash
|
||
~/omnisocket/peer \
|
||
-id peer-b \
|
||
-server 192.168.1.50:9000 \
|
||
-inbox-dir /tmp/peer-b-inbox
|
||
```
|
||
|
||
## Interactive Commands
|
||
|
||
`peer` 启动后可以在终端里持续使用同一条长连接发送多次消息。
|
||
|
||
```text
|
||
help
|
||
text peer-b hello
|
||
text peer-a hi
|
||
file peer-b /tmp/test.bin
|
||
quit
|
||
```
|
||
### 自动化拉取更新汇总数据
|
||
cd /home/limingjie/LMJ_Work/OmniSocketGo
|
||
./scripts/refresh-latency-summary.sh |