Skip to the content.

架构设计:实现负责消息转发、推送的网关服务

2024-08-20 10:00:00


请先看完负责网络、定时、坐下、站起、重连等,支持多类游戏的无锁房间

主要实现了接受客户端附带JWT的WebSocket连接即订阅,此协程阻塞读客户端消息保持长连接,这样系统将在需要时可以向指定用户编号推送消息(待实现),在客户端请求进入房间时创建新协程gRPC双向流连接并阻塞读游戏服务端消息

消息流大致如下

服务端

cd ~/go/src/github.com/panshiqu/server/game_server
go run main.go

# k8s容器化借助kube-dns以前暂时手动修改host
sudo sh -c 'echo "127.0.0.1 dice" >> /etc/hosts'

# JWT_KEY base64 decode: default_key
cd ~/go/src/github.com/panshiqu/server/gate_server
JWT_KEY=ZGVmYXVsdF9rZXk= go run main.go

客户端

# 以下导入可以二选一,它们的代码基本可以对比
# "github.com/panshiqu/server/gate_server/client" // WebSocket gate_server
# "github.com/panshiqu/server/game_server/client" // gRPC stream game_server
cd ~/go/src/github.com/panshiqu/server/game_server/game/dice/client

# JWT header base64 decode: {"alg":"HS256","typ":"JWT"}
# JWT payload base64 decode: {"id":1}
go run main.go -token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MX0.teQ2o406CHCk91dbp2D3p6ErkfIOELXlyKTkgMiPUT8
# 输入 sitdown、standup 等

简单说明

关于web_server(待实现)

写在最后