hliang пре 3 година
родитељ
комит
608b0288d3
1 измењених фајлова са 32 додато и 28 уклоњено
  1. 32 28
      main.go

+ 32 - 28
main.go

@@ -10,33 +10,31 @@ import (
 	"strings"
 	"sync"
 )
-//这里是普通http端口和ssl端口设置,随你改
-var Port=":12080"
-var sslPort = ":12443"
 
+var LocalPort=":12080"
+var sslPort = ":12443"
 
-//声明一个结构体 注入的ws就保存为结构体
 type Clients struct {
 	clientGroup string
 	clientName  string
-	//Data就是存方法的最新消息 用1个位置的管道来存
-	Data        map[string]chan string
-	clientWs    *websocket.Conn
+	//Action      map[string]string
+	Data     map[string]chan string
+	clientWs *websocket.Conn
 }
 
 var upGrader = websocket.Upgrader{
 	CheckOrigin: func(r *http.Request) bool { return true },
 }
-//存所有ws
+
 var hlClients sync.Map
 
 func NewClient(group string, name string, ws *websocket.Conn) *Clients {
-
+	
 	client := &Clients{
 		clientGroup: group,
 		clientName:  name,
 		Data:        make(map[string]chan string, 1),
-
+		//Action:      make(map[string]string),
 		clientWs: ws,
 	}
 	return client
@@ -54,16 +52,27 @@ func ws(c *gin.Context) {
 		return
 	}
 	client := NewClient(getGroup, getName, ws)
-
+	//message := []byte("hello," + getGroup + "->" + getName)
+	//err = ws.WriteMessage(1, message)
 	hlClients.Store(getGroup+"->"+getName, client)
 	for {
-		//读取ws中的数据
+		
 		_, message, err := ws.ReadMessage()
 		if err != nil {
 			break
 		}
 		msg := string(message)
-
+		//check:=[]uint8{104,108,65,99,116,105,111,110,58,94,95,94}
+		////fmt.Println(msg,string(check)==msg[:12])
+		//if len(msg)>12{
+		//	if string(check)==msg[:12]{
+		//		action:=msg[12:]
+		//		//client.Action[action]=""
+		//		hlClients.Store(getGroup + "->" + getName, client)
+		//	}
+		//}else{
+		//	fmt.Println(msg)
+		//}
 
 		check := []uint8{104, 108, 94, 95, 94}
 
@@ -77,13 +86,12 @@ func ws(c *gin.Context) {
 			}
 			client.Data[action] <- msg[strIndex+5:]
 
-			//fmt.Println("go")
-
+			
 			hlClients.Store(getGroup+"->"+getName, client)
 		} else {
 			fmt.Println(msg)
 		}
-
+		
 	}
 	hlClients.Delete(getGroup + "->" + getName)
 	defer ws.Close()
@@ -112,8 +120,9 @@ func Go(c *gin.Context) {
 		return
 	}
 	//fmt.Println(getGroup, getName)
+	fmt.Println(getGroup + "->" + getName)
 	clientName, ok := hlClients.Load(getGroup + "->" + getName)
-
+	fmt.Println(clientName)
 	if ok == false {
 		c.String(200, "注入了ws?没有找到当前组和名字")
 		return
@@ -128,10 +137,11 @@ func Go(c *gin.Context) {
 		value.Data[getAction] = make(chan string, 1)
 	}
 
-	//执行发送函数
 
-	QueryFunc(value, getAction, getParam)
 
+	QueryFunc(value, getAction, getParam)
+	//time.Sleep(time.Second)
+	//data:=value.Action[getAction]
 
 	data := <-value.Data[getAction]
 
@@ -147,14 +157,12 @@ func getList(c *gin.Context) {
 	resList := "hliang:\r\n"
 	hlClients.Range(func(key, value interface{}) bool {
 		resList += key.(string) + "\r\n\t"
+		
 		return true
 	})
 	c.String(200, resList)
 }
 
-func Home(c *gin.Context) {
-	c.String(200, "你好~")
-}
 func TlsHandler() gin.HandlerFunc {
 	return func(c *gin.Context) {
 		secureMiddleware := secure.New(secure.Options{
@@ -172,15 +180,11 @@ func TlsHandler() gin.HandlerFunc {
 
 func main() {
 	r := gin.Default()
-	r.GET("/", Home)
 	r.GET("/go", Go)
 	r.GET("/ws", ws)
 	r.GET("/list", getList)
 	r.Use(TlsHandler())
-	r.Run(Port)
-
-	//如果有https证书,请注释上面r.run那行,并把下面RunTls取消注释,设置pem和key为证书路径
-	//端口为12443
-	//r.RunTLS(sslPort, "zhengshu.pem", "zhengshu.key")
+	//r.Run(LocalPort)
+	r.RunTLS(sslPort, "zhengshu.pem", "zhengshu.key")
 
 }