1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
package main import ( "fmt" "github.com/gorilla/websocket" "net/http" ) var ( upgrader=websocket.Upgrader{ CheckOrigin: func(r *http.Request) bool { return true //true代表允许跨域访问 }, } ) func wsHandler(w http.ResponseWriter,r *http.Request){ var ( conn *websocket.Conn err error msgType int data []byte ) //将原本的http协议升级为websocket //返回连接对象与错误 if conn,err=upgrader.Upgrade(w,r,nil);err!=nil { return //升级失败 } for true { //循环读取消息,如果有错误,我们关闭这个连接 if msgType,data,err=conn.ReadMessage();err!=nil { fmt.Println("某人下线了") _=msgType goto ERR } fmt.Println(string(data)) //发送消息用conn.WriteMessage()方法 //conn.WriteMessage() 方法第一个参数为消息类型,具体如这个:websocket.TextMessage if err=conn.WriteMessage(websocket.TextMessage,data);err!=nil{ goto ERR } } ERR: conn.Close() //关闭此链接 } func main() { http.HandleFunc("/ws",wsHandler) http.ListenAndServe(":8080",nil) } |
© 著作权归作者所有
文章评论(0)