我是HullQin,公众号线下聚会游戏的作者(欢迎关注公众号,发送加微信,交个朋友),转发本文前需获得作者HullQin授权。我独立开发了《联机桌游合集》,是个网页,可以很方便的跟朋友联机玩斗地主、五子棋等游戏,不收费没广告。还开发了《Dice Crush》参加Game Jam 2022。喜欢可以关注我 HullQin 噢~我有空了会分享做游戏的相关技术。
背景
上篇文章:《为什么我选用Go重构Python版本的WebSocket服务?》,介绍了我的目标。
从这篇文章开始,我们进入实战,正式介绍Go WebSocket框架。
还没学过Go,要先看什么?
建议你花1天时间,看一下Go的原理简介、基础语法。什么教程都可以,知名的教程就行。
至少要明白:各种数据类型,控制流(for、if等)写法,弄懂channel和goroutine,如何加锁。
一定要自己写写goroutine和channel试一下,了解一下基础语法。
此外,还要了解常用包的用法,包括fmt、net/http。
技术选型
面对自己不熟悉的语言和不熟悉的框架,该怎么做技术选型呢?
我告诉你个小技巧,直接在Github上搜索,看Star最多的那个仓库,就可以啦~

看吧,我们搜到了gorilla/websocket,star数以显著差异甩开了后面几名。这就没有什么好纠结的了,果断使用它。
新建项目
在使用GoLand时,新建Go Project会有2个选项:

我们选用第一个即可。
如果你没有GoLand,也可以手动创建文件夹,在里面新建文件go.mod(我是使用的目前最新稳定版1.18)
module echo
go 1.18
安装依赖
go get github.com/gorilla/websocket
拷贝echo代码
把gorilla/websocket的官方demo拷贝过来即可,我们慢慢分析:
- https://github.com/gorilla/websocket/blob/master/examples/echo/server.go
只需要拷贝这一个文件,命名为server.go即可。
先尝试运行
go run server.go
然后浏览器打开 localhost:8080就可以了~

- 点击「Open」建立WebSocket连接
- 编辑好文本,按Send发送一个消息给服务器
- 服务器立马回复一个一模一样的消息,这就是echo
- 点击「Close」关闭连接,之后无法Send
你的所有操作都会记录在页面上:

当然,也可以打开开发者工具,查看WebSocket连接,就像你查看Http请求那样。这篇文章教了你怎样使用Chrome的开发者面板抓包:《遇到表格,手动翻页太麻烦?我教你写脚本,一页展示所有数据》。


代码解读
引入依赖
package main
import (
"flag"
"html/template"
"log"
"net/http"
"github.com/gorilla/websocket"

本文介绍了如何使用Go构建一个WebSocket回显服务器。首先,对于初学者,建议快速了解Go的基础语法和常用包。然后,通过Github找到高星的`gorilla/websocket`库进行技术选型。接着,创建项目,安装依赖,并复制官方的echo服务器示例代码。在本地运行服务器后,可以使用浏览器和WebSocket连接进行交互。文章还解析了代码,解释了如何处理WebSocket连接和HTTP请求,以及如何确保收发消息的顺序性。
最低0.47元/天 解锁文章
968

被折叠的 条评论
为什么被折叠?



