用golang写的帧同步服务器,目标是作为一个可以横向扩展,完全脱离玩法逻辑的帧同步服务器。
go run cmd/example_server/main.go
sh cmd/example_client/create_room.sh
go run cmd/example_client/main.go -room=1 -id=1
go run cmd/example_client/main.go -room=1 -id=2
|-----------------------------message-----------------------------------------|
|----------------------Header------------------|------------Body--------------|
|------Body Length-------|--------Msg ID-------|------------Body--------------|
|---------uint16---------|---------uint8-------|------------bytes-------------|
|-----------2------------|----------1----------|-----------len(Body)----------|
MSG_Connect & C2S_ConnectMsg
MSG_Connect & S2C_ConnectMsg
MSG_JoinRoom
MSG_Connect & S2C_JoinRoomMsg
MSG_Progress & C2S_ProgressMsg
MSG_Progress & S2C_ProgressMsg
注:广播者收不到这个消息MSG_Ready
MSG_Ready
MSG_Start
MSG_Input & C2S_InputMsg
MSG_Frame & S2C_FrameMsg
MSG_Result & C2S_ResultMsg
MSG_Result
MSG_Result
或者MSG_Close
客户端断开网络连接进入其他流程MSG_Connect & C2S_ConnectMsg
**(前提是当前游戏房间还存在)**即可进入房间,服务端会把之前的帧分批次发给客户端。(这里可以考虑改成客户端请求缺失的帧)