websocket服务端

import (
   //省略其他,引用了一个第三方库,github有源码,对websokcet的封装
    "github.com/gorilla/websocket"
)

const (
    serverPort = ":8086"
)

//设置连接参数,upgrader.Upgrade(w, r, nil),使用第三方库websocket获取websocket连接
var upgrader = websocket.Upgrader{
        //允许跨域访问
        //重载函数CheckOrigin
        //函数名:fuc(参数) 返回值
        CheckOrigin: func(r *http.Request) bool{

              return true;
        },
    //设置websocket连接参数,成员变量赋值,读写buff缓冲区大小,
    ReadBufferSize:  40*1024,
    WriteBufferSize: 4*1024,
}

func serveWs(w http.ResponseWriter, r *http.Request) {

    conn, err := upgrader.Upgrade(w, r, nil)

    if err != nil {
        log.Println(err)
        return
    }
       //有了conn之后就可以根据业务需求读写数据,
      conn.ReadMessage()
      conn.WriteMessage(websocket.BinaryMessage,byte data)
      conn.WriteMessage(websocket.TextMessage,"string data")
}

func main() {

    http.HandleFunc("/ws", serveWs)
    
         //一直阻塞监听端口,等待客户端连接
    err := http.ListenAndServe(serverPort, nil)
    if err != nil {
        log.Fatal("ListenAndServe: ", err)
    }

}

你可能感兴趣的:(websocket服务端)