go websockets客户端不断接收服务器端消息
首先是要连接websockets客户端
我这里的连接是wss,ws的在我的其他文章写了
func main() {
wsc := NewWsClientManager("127.0.0.1", "8100", "", 10)
wsc.dail()
}
func NewWsClientManager(addrIp, addrPort, path string, timeout int) *websocketClientManager {
addrString := addrIp + ":" + addrPort
var sendChan = make(chan string, 10)
var recvChan = make(chan string, 10)
var conn *websocket.Conn
return &websocketClientManager{
addr: &addrString,
path: path,
conn: conn,
sendMsgChan: sendChan,
recvMsgChan: recvChan,
isAlive: false,
timeout: timeout,
}
}
// 链接服务端
func (wsc *websocketClientManager) dail() {
var err error
u := url.URL{Scheme: "wss", Host: *wsc.addr, Path: wsc.path}
log.Printf("connecting to %s", u.String())
dialer := websocket.Dialer{TLSClientConfig: &tls.Config{RootCAs: nil, InsecureSkipVerify: true}}
wsc.conn, _, err = dialer.Dial(u.String(), nil)
if err != nil {
fmt.Println(err)
return
}
wsc.isAlive = true
log.Printf("connecting to %s 链接成功!!!", u.String())
wsc.conn.Close()
// 构造发送json
send := SendAMessage{Type: 2, id: 1}
// 构建json数据
marshal, err := json.Marshal(send)
if err != nil {
fmt.Println(err)
}
//客户端发送数据
err = wsc.conn.WriteMessage(websocket.TextMessage, marshal)
if err != nil {
fmt.Println(err)
return
}
//不断接收服务器端消息
for {
_, p, err := wsc.conn.ReadMessage()
if err != nil {
}
data:= ReadMessage{}
err = json.Unmarshal(p, &data)
if err != nil {
}
//数据处理
这里就是对数据data做处理
}
}