go_dreamfactory/modules/gateway/client_test.go
2022-06-06 18:42:03 +08:00

60 lines
1.2 KiB
Go

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")
}
}