网络游戏初步接入

This commit is contained in:
2024-10-18 15:11:40 +08:00
parent 263a57f636
commit b27d2b80f7
12 changed files with 306 additions and 67 deletions
+56 -13
View File
@@ -115,29 +115,45 @@ func (c *ClientService) Download(online *models.Online, uuid string, progress bi
}
func (c *ClientService) Chat(online *models.Online, text string) (string, error) {
var user = repo.User.GetUserInfo(global.DB)
ctx, carnal := context.WithTimeout(context.TODO(), time.Millisecond*500)
defer carnal()
b, err := json.Marshal(gin.H{"text": text, "uuid": user.ID})
req := gin.H{
"text": text,
}
msg, err := PostSend("/chat", online, req)
if err != nil {
return "", err
}
res, err := http.NewRequestWithContext(ctx, "POST", online.Url("/chat"), bytes.NewBuffer(b))
return msg["message"].(string), err
}
func (c *ClientService) StartGame(online *models.Online, gameUuid string, gameType int) (string, error) {
req := gin.H{
"type": gameType,
"game_uuid": gameUuid,
}
msg, err := PostSend("/start_game", online, req)
if err != nil {
return "", err
}
res.Header.Set("Content-Type", "application/json")
res.Header.Set("User-UserID", user.ID)
resp, err := http.DefaultClient.Do(res)
return msg["message"].(string), err
}
func (c *ClientService) PlayGame(online *models.Online, gameUuid string, pos int) (string, error) {
req := gin.H{
"pos": pos,
"game_uuid": gameUuid,
}
msg, err := PostSend("/play_game", online, req)
if err != nil {
return "", err
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
var msg = make(map[string]any)
if err = json.Unmarshal(data, &msg); err != nil {
return "", err
return msg["message"].(string), err
}
func (c *ClientService) CloseGame(online *models.Online, gameUuid string) (string, error) {
req := gin.H{
"game_uuid": gameUuid,
}
msg, err := PostSend("/close_game", online, req)
return msg["message"].(string), err
}
@@ -204,3 +220,30 @@ func unzipFile(zipFile, destDir string) error {
return nil
}
func PostSend(router string, online *models.Online, req gin.H) (gin.H, error) {
var user = repo.User.GetUserInfo(global.DB)
ctx, carnal := context.WithTimeout(context.TODO(), time.Millisecond*500)
defer carnal()
b, err := json.Marshal(req)
if err != nil {
return nil, err
}
res, err := http.NewRequestWithContext(ctx, "POST", online.Url(router), bytes.NewBuffer(b))
if err != nil {
return nil, err
}
res.Header.Set("Content-Type", "application/json")
res.Header.Set("User-User", user.ID)
resp, err := http.DefaultClient.Do(res)
if err != nil {
return nil, err
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
var msg = make(map[string]any)
if err = json.Unmarshal(data, &msg); err != nil {
return nil, err
}
return msg, err
}