websocket的客户端(发送接收json的消息)

1.导包

            "github.com/gorilla/websocket"

2.结构体

type Student struct{

        Name string `json:"type"`

        Gender string `json:"call"`

}

说明:传入传出的json中的键名要一致

3.连接服务器

        client,_,err :=websocket.DefaultDialer.Dial("服务器地址",nil)

4.解码json并发送消息

        msg := Student{

        Name : "cc",

        Gender:"男",

}

    err = client.WriteJSON(websocket)

5.读取消息

for{

var student Student

    err :=client.ReadJSON(&student)

    if err != nil{

        log.Fatal("读取失败,",err)

    }

    log.Println("收到; ",student)

}

其实可以使用go协程来完成,只是步骤我没有写下来

package main

import (

    "sync"

    "log"

    "github.com/gorilla/websocket"

)

type Student struct{

    Name string `json:"type"`

    Gender string `json:"call"`

}

func main() {

    //连接WebSocket服务器

    // conn, _, err := websocket.DefaultDialer.Dial("ws://175.27.250.177:8090/rtc/echo", nil)

    // if err != nil {

    //     log.Fatal(err)

    // }

    // defer conn.Close()

    // // 发送消息

    // err = conn.WriteMessage(websocket.TextMessage, []byte("Hello, world!"))

    // if err != nil {

    //     log.Fatal(err)

    // }

    // // 读取消息

    // messageType, p, err := conn.ReadMessage()

    // if err != nil {

    //     log.Fatal(err)

    // }

    // log.Println("Received message:", string(p))

    // log.Println(messageType)

    // 连接websocket的服务器

    var wg sync.WaitGroup

    client,_,err := websocket.DefaultDialer.Dial("wss://chat.ruzhila.cn/rtc/echo",nil)

    if err !=nil{

        log.Fatal("连接失败:", err)

    }

    defer client.Close()

    // 告诉主线程要等一个新的go协程完成

    wg.Add(1)

    go func ()  {

        // 当这个go协程结束后,告诉主线程我结束了

        defer wg.Done()

    // 读取消息

        receive(client)

    }()

    // 解码为JSON,并发送

    send(client)

    // 等待所有go协程完成

    wg.Wait()  

}

func receive(client *websocket.Conn){

    var student Student

    err :=client.ReadJSON(&student)

    if err != nil{

        log.Fatal("读取失败,",err)

    }

    log.Println("收到; ",student)

       

}

func send(client *websocket.Conn) {

    msg :=Student{

        Name:"daf",

        Gender: "男",

    }

    err := client.WriteJSON(&msg)

    if err != nil {

        log.Fatal(err)

    }

}

   

你可能感兴趣的:(websocket的客户端(发送接收json的消息))