2.3 KiB
2.3 KiB
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
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
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
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
把对应架构的二进制拷到目标机器,并赋予可执行权限。
scp bin/server-linux-amd64 user@server-host:~/omnisocket/server
scp bin/peer-linux-amd64 user@peer-host:~/omnisocket/peer
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。
~/omnisocket/server -listen 0.0.0.0:9000
每个 peer 所在机器连接 server 的实际 IP,例如 192.168.1.50:9000。
peer-a
~/omnisocket/peer \
-id peer-a \
-server 192.168.1.50:9000 \
-inbox-dir /tmp/peer-a-inbox
peer-b
~/omnisocket/peer \
-id peer-b \
-server 192.168.1.50:9000 \
-inbox-dir /tmp/peer-b-inbox
Interactive Commands
peer 启动后可以在终端里持续使用同一条长连接发送多次消息。
help
text peer-b hello
text peer-a hi
file peer-b /tmp/test.bin
quit