# 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 按目标架构分别编译。 ### Linux amd64 ```bash CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o bin/server-linux-amd64 ./cmd/server CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o bin/peer-linux-amd64 ./cmd/peer ``` ### Linux arm64 ```bash CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o bin/server-linux-arm64 ./cmd/server 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 ``` ## Deploy 把对应架构的二进制拷到目标机器,并赋予可执行权限。 ```bash scp bin/server-linux-amd64 user@server-host:~/omnisocket/server scp bin/peer-linux-amd64 user@peer-host:~/omnisocket/peer ``` ```bash ssh user@server-host 'chmod +x ~/omnisocket/server' ssh user@peer-host 'chmod +x ~/omnisocket/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 ```