mirror of
https://github.com/giongto35/cloud-game.git
synced 2026-07-18 17:16:04 +00:00
(experimental feature) Before a worker can start, it should have a configuration file. In case if such a file is not found it may request configuration from the coordinator to which it connected. Added example logic if a worker is needed to be blocked until a successful packet exchange with a coordinator is being made. * Add error return for config loader * Add config loaded flag to worker * Add zone flag * Add a custom mutex lock with timout * Refactor worker runtime * Refactor internal api * Extract monitoring server config * Extract worker HTTP(S) server * Add generic sub-server interface * Add internal coordinator API * Add internal routes and handlers to worker * Add internal worker API * Refactor worker run * Migrate serverId call to new API * Add packet handler to cws * Extract handlers for internal worker routes in coordinator * Pass worker to the worker internal heandlers * Cleanup worker handlers in coordinator * Add closeRoom packet handler to the API * Add GetRoom packet handler to the API * Add RegisterRoom packet handler to the API * Add IceCandidate packet handler to the API (internal and browser) * Add Heartbeat packet handler to the API (internal and browser) * Rename worker routes init function * Extract worker/coordinator internal ws handlers * Update timed locker * Allow sequential timed locks * Add config request from workers * Add nil check for the route registration functions
51 lines
1.5 KiB
Go
51 lines
1.5 KiB
Go
package api
|
|
|
|
import "github.com/giongto35/cloud-game/v2/pkg/cws"
|
|
|
|
const (
|
|
ConfigRequest = "config_request"
|
|
GetRoom = "get_room"
|
|
CloseRoom = "close_room"
|
|
RegisterRoom = "register_room"
|
|
Heartbeat = "heartbeat"
|
|
IceCandidate = "ice_candidate"
|
|
|
|
NoData = ""
|
|
|
|
InitWebrtc = "init_webrtc"
|
|
Answer = "answer"
|
|
|
|
GameStart = "start"
|
|
GameQuit = "quit"
|
|
GameSave = "save"
|
|
GameLoad = "load"
|
|
GamePlayerSelect = "player_index"
|
|
GameMultitap = "multitap"
|
|
)
|
|
|
|
type GameStartRequest struct {
|
|
GameName string `json:"game_name"`
|
|
IsMobile bool `json:"is_mobile"`
|
|
}
|
|
|
|
func (packet *GameStartRequest) From(data string) error { return from(packet, data) }
|
|
|
|
type GameStartCall struct {
|
|
Name string `json:"name"`
|
|
Path string `json:"path"`
|
|
Type string `json:"type"`
|
|
}
|
|
|
|
func (packet *GameStartCall) From(data string) error { return from(packet, data) }
|
|
func (packet *GameStartCall) To() (string, error) { return to(packet) }
|
|
|
|
//
|
|
// *** packets ***
|
|
//
|
|
func ConfigPacket() cws.WSPacket { return cws.WSPacket{ID: ConfigRequest} }
|
|
func RegisterRoomPacket(data string) cws.WSPacket { return cws.WSPacket{ID: RegisterRoom, Data: data} }
|
|
func GetRoomPacket(data string) cws.WSPacket { return cws.WSPacket{ID: GetRoom, Data: data} }
|
|
func CloseRoomPacket(data string) cws.WSPacket { return cws.WSPacket{ID: CloseRoom, Data: data} }
|
|
func IceCandidatePacket(data string, sessionId string) cws.WSPacket {
|
|
return cws.WSPacket{ID: IceCandidate, Data: data, SessionID: sessionId}
|
|
}
|