go get github.com/gorilla/websocket
运行:
main.go
package main
import (
"chat"
)
func main() {
chat.ServerStar()
}
$ go run main.go 默认地址 localhost:8080
//或
$ go run main.go -addr 127.0.0.1:8080
监听 ws://localhost:8080/ws
// 启动服务端
go run example/server.go
// 启动客户端
go run example/client.go
客户端之间消息互相广播
- 增加事件钩子, 业务解耦
- 结构化消息格式
- 定向消息(@人)
- 闲时心跳检测
- 日志
- 消息持久化
- conn 和 user_id 的关联绑定
- 指定范围的广播(群组)
- socket转http
- 历史消息/限流
- 2020/01/09
将消息分发逻辑拆分出来, 目前是通过chan来进行消息互通
优点:
将函数调用变成事件触发, 以此去解耦操作, 后续如果需要改变消息分发方式, 改动的代码会较少
缺点:
改动的地方不少, 估计后续开发会因为这个变动多一些代码量但是值
- 2020/02/28
新增指定消息, 可发送到指定的cli.ID的client中 新增服务端的心跳检测, 服务端每隔30s主动向客户端发送一条心跳消息, 如果没回应的话重试2次后服务端中断链接 补充一下文档, 接下来准备业务id和机器id绑定