专业的做网站的资深网站
web/
2025/10/5 9:58:16/
文章来源:
专业的做网站的,资深网站,网站做系统叫什么软件,网站做的好是不是影响就大文章目录 引言进入正题1、依赖2、升级客户端3、websocket处理方法4、完整代码 引言
实时性较高的地方#xff0c;我们可能会使用到websocket对信息进行实时推送#xff0c;涉及到websocket就会有开启连接#xff0c;接收消息#xff0c;推送消息#xff0c;错误处理等机制… 文章目录 引言进入正题1、依赖2、升级客户端3、websocket处理方法4、完整代码 引言
实时性较高的地方我们可能会使用到websocket对信息进行实时推送涉及到websocket就会有开启连接接收消息推送消息错误处理等机制那么现在我们就使用go语言来实现一个消息的实时推送与接收
进入正题
1、依赖
除去正常的go的sdk依赖我们需要另一个依赖
github.com/gorilla/websocket2、升级客户端
我们使用的websocket都是从http升级上去的所以直接贴上代码
var upgrader websocket.Upgrader{CheckOrigin: func(r *http.Request) bool {// 这里设置拦截或者其他东西返回true则升级返回false直接拦截不升级return true},
}3、websocket处理方法
func wsHandle(w http.ResponseWriter, r *http.Request) {// 升级为wsconn, err : upgrader.Upgrade(w, r, nil)if err ! nil {fmt.Println(err)return}defer conn.Close()fmt.Print(连接建立成功)for {// 读取客户端消息messageType, p, err : conn.ReadMessage()if err ! nil {fmt.Println(err)return}// 处理消息// 回复或者发送err conn.WriteMessage(messageType, p)if err ! nil {fmt.Println(err)return}}
}4、完整代码
package mainimport (fmtgithub.com/gorilla/websocketnet/http
)var upgrader websocket.Upgrader{CheckOrigin: func(r *http.Request) bool {// 允许所有来源的WebSocket连接return true},
}func main() {http.HandleFunc(/ws, wsHandle)err : http.ListenAndServe(:9009, nil)if err ! nil {fmt.Println(err)}
}func wsHandle(w http.ResponseWriter, r *http.Request) {// 升级为wsconn, err : upgrader.Upgrade(w, r, nil)if err ! nil {fmt.Println(err)return}defer conn.Close()fmt.Print(连接建立成功)for {// 读取客户端消息messageType, p, err : conn.ReadMessage()if err ! nil {fmt.Println(err)return}// 处理消息fmt.Printf(string(p))// 发送消息给客户端err conn.WriteMessage(messageType, p)if err ! nil {fmt.Println(err)return}}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87302.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!