hliang 4 luni în urmă
părinte
comite
7ef70b90ee
1 a modificat fișierele cu 5 adăugiri și 0 ștergeri
  1. 5 0
      core/engine.go

+ 5 - 0
core/engine.go

@@ -6,9 +6,12 @@ import (
 	"encoding/json"
 	log "github.com/sirupsen/logrus"
 	"math/rand"
+	"sync"
 	"time"
 )
 
+var wsMutex sync.Mutex
+
 // GQueryFunc 发送请求到客户端
 func (c *Clients) GQueryFunc(funcName string, param string, resChan chan<- string) {
 	if c.actionData[funcName] == nil {
@@ -31,6 +34,7 @@ func (c *Clients) GQueryFunc(funcName string, param string, resChan chan<- strin
 	WriteData := Message{Param: param, MessageId: MessageId, Action: funcName}
 	data, _ := json.Marshal(WriteData)
 	clientWs := c.clientWs
+	wsMutex.Lock()
 	err := clientWs.WriteMessage(1, data)
 	if err != nil {
 		log.Error(err, "写入数据失败")
@@ -43,6 +47,7 @@ func (c *Clients) GQueryFunc(funcName string, param string, resChan chan<- strin
 		utils.LogPrint(MessageId + "超时了")
 		resChan <- "黑脸怪:timeout"
 	}
+	wsMutex.Unlock()
 	// 清理资源
 	gm.Lock()
 	delete(c.actionData[funcName], MessageId)