服务端
package main
import (
"fmt"
"github.com/gorilla/websocket"
"log"
"math/rand"
"net/http"
)
var UP = websocket.Upgrader{
ReadBufferSize: 2048,
WriteBufferSize: 2048,
}
func handler(w http.ResponseWriter, r *http.Request) {
conn, err := UP.Upgrade(w, r, nil)
if err != nil {
fmt.Println(err)
return
}
for {
_, p, e := conn.ReadMessage()
log.Println("舔狼们:", string(p))
msg := []string{"哈哈...", "真的吗?", "嗯呢", "是吗?", "这个也太那个了吧"}
conn.WriteMessage(websocket.TextMessage, []byte(msg[rand.Intn(len(msg))]))
if e != nil {
fmt.Println("收到消息,退出程序!")
break
}
}
defer conn.Close()
log.Println("关闭服务!")
}
func main() {
http.HandleFunc("/", handler)
err := http.ListenAndServe(":8890", nil)
if err != nil {
log.Println("err = ", err)
}
}
客户端
package main
import (
"bufio"
"github.com/gorilla/websocket"
"log"
"os"
)
func main() {
dl := websocket.Dialer{}
conn, _, err := dl.Dial("ws://127.0.0.1:8890", nil)
if err != nil {
log.Println("建立链接失败!!")
return
}
go send(conn)
for {
m, p, e := conn.ReadMessage()
if e != nil {
return
}
log.Println(m, string(p))
}
}
func send(conn *websocket.Conn) {
for {
reader := bufio.NewReader(os.Stdin)
l, _, _ := reader.ReadLine()
conn.WriteMessage(websocket.TextMessage, l)
}
}