答案:使用Golang和gorilla/websocket库可实现WebSocket通信。1. 安装依赖:go get github.com/gorilla/websocket;2. 编写服务器端代码,监听/ws路径,升级HTTP连接为WebSocket,接收并回显消息;3. 编写客户端代码,连接本地服务器,发送”Hello, WebSocket!”并接收回显;4. 先运行服务器,再运行客户端,验证双向通信成功。

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,非常适合实时应用,比如聊天、通知推送等。Golang 提供了简洁高效的语言特性来实现 WebSocket 服务端和客户端。下面是一个基于 gorilla/websocket 库的完整示例,展示如何用 Go 编写 WebSocket 服务器与客户端。
1. 安装依赖
使用 gorilla/websocket 库,先安装:
go get github.com/gorilla/websocket
2. WebSocket 服务器端实现
服务器监听 WebSocket 连接,接收客户端消息并回显。
server.go
package mainimport ( "log" "net/http" "github.com/gorilla/websocket")var upgrader = websocket.Upgrader{ CheckOrigin: func(r *http.Request) bool { return true // 允许跨域 },}func echoHandler(w http.ResponseWriter, r *http.Request) { conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Print("升级 WebSocket 失败:", err) return } defer conn.Close() for { // 读取消息 messageType, message, err := conn.ReadMessage() if err != nil { log.Print("读取消息失败:", err) break } log.Printf("收到消息: %s", message) // 回显消息 if err := conn.WriteMessage(messageType, message); err != nil { log.Print("发送消息失败:", err) break } }}func main() { http.HandleFunc("/ws", echoHandler) log.Println("服务器启动在 :8080") log.Fatal(http.ListenAndServe(":8080", nil))}
3. WebSocket 客户端实现
客户端连接服务器,发送一条消息并接收回显。
client.go
立即学习“go语言免费学习笔记(深入)”;
package mainimport ( "log" "net/url" "github.com/gorilla/websocket")func main() { u := url.URL{Scheme: "ws", Host: "localhost:8080", Path: "/ws"} log.Printf("连接到 %s", u.String()) conn, _, err := websocket.DefaultDialer.Dial(u.String(), nil) if err != nil { log.Fatal("连接失败:", err) } defer conn.Close() // 发送消息 message := []byte("Hello, WebSocket!") err = conn.WriteMessage(websocket.TextMessage, message) if err != nil { log.Fatal("发送消息失败:", err) } // 读取回显 _, msg, err := conn.ReadMessage() if err != nil { log.Fatal("读取消息失败:", err) } log.Printf("收到回显: %s", msg)}
4. 运行步骤
启动服务器和客户端验证通信。运行服务器:go run server.go 另起终端运行客户端:go run client.go 服务器应输出收到的消息,客户端输出回显内容
基本上就这些。这个例子展示了最基础的 WebSocket 双向通信流程。你可以在此基础上扩展:广播消息、维护连接池、心跳检测等。不复杂但容易忽略。
以上就是GolangWebSocket客户端与服务器示例的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1403124.html
微信扫一扫
支付宝扫一扫