GolangWebSocket客户端与服务器示例

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

golangwebsocket客户端与服务器示例

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Golang Linux系统下源码编译安装步骤
上一篇 2025年12月15日 19:18:43
Golang缓存设计提升程序运行效率
下一篇 2025年12月15日 19:18:54

相关推荐

发表回复

登录后才能评论
关注微信