万妙音 发表于 2025-6-8 12:23:28

golang开发 gorilla websocket的使用

很多APP都需要主动向用户推送消息,这就需要用到长连接的服务,即我们通常提到的websocket,同样也是使用socket服务,通信协议是基本类似的,在go中用的最多的、也是最简单的socket服务就是gorilla/websocket,它有21.1K的star,足以说明它的受欢迎程度, 它的github地址是 https://github.com/gorilla/websocket,我们的长连接服务也是通过gorilla/websocket改造出来的。
websocket的简单使用

我们使用的版本是1.3.0,首先下载websocket
go get github.com/gorilla/websocket@v1.3.0
把websocket/examples/echo下面的 client.go server.go 现在下来拷贝到项目里面。
https://github.com/gorilla/websocket/blob/v1.3.0/examples/echo/server.go
https://github.com/gorilla/websocket/blob/v1.3.0/examples/echo/client.go
在一个终端执行 websocket 服务
go run server.go
recv: 2024-04-16 15:09:45.805438 +0800 CST m=+1.007536889
recv: 2024-04-16 15:09:46.805425 +0800 CST m=+2.007517605
recv: 2024-04-16 15:09:47.806274 +0800 CST m=+3.008359325
recv: 2024-04-16 15:09:48.80495 +0800 CST m=+4.007028866
recv: 2024-04-16 15:09:49.805743 +0800 CST m=+5.007816108
recv: 2024-04-16 15:09:50.806087 +0800 CST m=+6.008153310
recv: 2024-04-16 15:09:51.805348 +0800 CST m=+7.007407266再打开一个终端执行 go run client.go,充当客户端
connecting to ws://localhost:8080/echorecv: 2024-04-16 15:09:45.805438 +0800 CST m=+1.007536889
recv: 2024-04-16 15:09:46.805425 +0800 CST m=+2.007517605
recv: 2024-04-16 15:09:47.806274 +0800 CST m=+3.008359325
recv: 2024-04-16 15:09:48.80495 +0800 CST m=+4.007028866
recv: 2024-04-16 15:09:49.805743 +0800 CST m=+5.007816108
recv: 2024-04-16 15:09:50.806087 +0800 CST m=+6.008153310
recv: 2024-04-16 15:09:51.805348 +0800 CST m=+7.007407266我们看看这个简单的例子。
client.go
go func() {                defer close(done)                for {                        _, message, err := c.ReadMessage()                        if err != nil {                                log.Println("read:", err)                                return                        }                        log.Printf("recv: %s", message)                }        }()        ticker := time.NewTicker(time.Second)        defer ticker.Stop()        for {                select {                case

司马黛 发表于 2025-11-1 06:18:20

新版吗?好像是停更了吧。

套缈 发表于 2026-1-18 06:33:47

过来提前占个楼

坠矜 发表于 2026-1-18 08:57:26

收藏一下   不知道什么时候能用到

祉遛吾 发表于 2026-1-19 01:43:44

感谢,下载保存了

谭皎洁 发表于 2026-1-20 10:54:08

感谢发布原创作品,程序园因你更精彩

轮达 发表于 2026-1-21 16:41:03

收藏一下   不知道什么时候能用到

国瑾瑶 发表于 2026-1-22 20:30:11

感谢发布原创作品,程序园因你更精彩

班嘉淑 发表于 2026-1-23 09:21:23

感谢分享

少琼 发表于 2026-1-28 04:44:21

感谢,下载保存了

劳暄美 发表于 2026-1-30 04:05:24

前排留名,哈哈哈

百里宵月 发表于 2026-1-30 06:11:31

很好很强大我过来先占个楼 待编辑

米榜饴 发表于 2026-2-3 06:03:18

前排留名,哈哈哈

裒噎 发表于 2026-2-5 10:02:50

分享、互助 让互联网精神温暖你我

拼匍弦 发表于 2026-2-8 07:56:58

感谢分享,下载保存了,貌似很强大

慢秤 发表于 2026-2-9 03:05:04

yyds。多谢分享

戈森莉 发表于 2026-2-11 07:37:52

过来提前占个楼

类饲冰 发表于 2026-2-11 20:40:47

感谢分享

讣丢 发表于 2026-2-12 00:10:51

这个好,看起来很实用

筒霓暄 发表于 2026-2-12 20:27:45

收藏一下   不知道什么时候能用到
页: [1] 2
查看完整版本: golang开发 gorilla websocket的使用