Gorilla
简介
- web工具包
- gorilla/context存储全局请求变量。
- gorilla/mux是功能强大的URL路由器和调度程序。
- gorilla/reverse为基于正则表达式的多路复用生成可逆的正则表达式。
- gorilla/rpc使用JSON-RPC的编解码器在HTTP上实现RPC。
- gorilla/schema将表单值转换为结构。
- gorilla/securecookie编码和解码经过身份验证的(可选)加密的cookie值。
- gorilla/sessions保存cookie和文件系统会话,并允许自定义会话后端。
- gorilla/websocket实现RFC 6455中定义的WebSocket协议
websocket
- 常用函数:
- ws.ReadMessage()
- ws.ReadJSON()
- ws.WriteMessage()
- ws.WriteJSON()
- 示例
type Msg struct {
A string `json:"a"`
}
var upGrader = websocket.Upgrader{
CheckOrigin: func(r *http.Request) bool {
return true
},
}
//webSocket请求ping
func ping(c *gin.Context) {
//升级get请求为webSocket协议
ws, err := upGrader.Upgrade(c.Writer, c.Request, nil)
if err != nil {
return
}
defer ws.Close()
m := &Msg{}
for {
//读取ws中的数据
err := ws.ReadJSON(&m)
if err != nil {
break
}
//写入ws数据
err = ws.WriteJSON(m)
if err != nil {
break
}
}
}
func main() {
r := gin.Default()
r.GET("/ping", ping)
r.Run(":8000")
}
参考文档