介绍
示例仓库
- 官方例子:Chat example
- 为上更改过的例子:cloud-native-game-server/2-gorilla-websocket-chat
为啥要再熟悉下这个例子?
通过通信共享内存,通过通信共享内存,通过通信共享内存
分析 Nano 之前,再过一遍 Golang 的并发编程。
示例分析
这里我整理下这个例子的官方 README.md
一句话描述业务
- 客户端可以连接服务器
- 客户端可以发送消息,然后服务端立即广播消息
技术描述业务
websocket
websocket读写
Clientwebsocket读写
websocket
HubClientClientwebsocket写
Server
ClientHubClientClientHubHub
HubClientHubClient
核心源码解释:
Hub
Hubmainrunregisterunregisterbroadcast
clients
clientssend
sendsend
核心源码解释:
Client
Client
serveWsmain
writePump
readPump
readPumpwritePump
writePumpsend
核心源码解释:
API 的相关细节,大家可以直接查文档,思想才是最重要的
Frontend
前端代码在 home.html 中。
在加载文档时,脚本在浏览器中检查 websocket 功能。如果 websocket 功能可用,那么脚本打开一个到服务器的连接,并注册一个回调函数来处理来自服务器的消息。回调函数使用 appendLog 函数将消息追加到聊天日志中。
appendLog
表单处理程序将用户输入写入websocket并清除输入字段。
Docker 搭建开发调试环境
Image
启动开发环境(支持 live reload)
进入 localhost:3250 可以看到效果。