package gateway_test import ( "fmt" "go_dreamfactory/pb" "os" "os/signal" "syscall" "testing" "github.com/gorilla/websocket" "google.golang.org/protobuf/proto" ) func Test_WebSocket(t *testing.T) { url := "ws://localhost:7891/gateway" //服务器地址 ws, _, err := websocket.DefaultDialer.Dial(url, nil) if err != nil { fmt.Printf("err:%v", err) return } go func() { var msg *pb.UserMessage = &pb.UserMessage{} for { _, data, err := ws.ReadMessage() if err != nil { fmt.Printf("err:%v\n", err) } if err = proto.Unmarshal(data, msg); err != nil { fmt.Printf("err:%v\n", err) } else { fmt.Printf("ReadMessage msg:%v\n", msg) } } }() loginreq := &pb.UserLoginReq{ Name: "aaa", } logindata, _ := proto.Marshal(loginreq) message := &pb.UserMessage{ MainType: "login", SubType: "login", Data: logindata, } data, _ := proto.Marshal(message) err = ws.WriteMessage(websocket.BinaryMessage, data) if err != nil { fmt.Printf("err:%v\n", err) } sigterm := make(chan os.Signal, 1) signal.Notify(sigterm, syscall.SIGINT, syscall.SIGTERM) select { case <-sigterm: fmt.Printf("terminating: via signal\n") } }