gin如何和前端进行webstock
时间: 2023-06-27 12:06:40 浏览: 124
首先,需要明确一点,Websocket 是一种协议,而不是前端或后端的某个框架或语言。
在 Gin 中实现 Websocket 通信,可以使用 github.com/gin-gonic/gin 已经提供的中间件 gin-contrib/websocket。
以下是一个简单的示例代码:
```go
package main
import (
"log"
"net/http"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"github.com/gorilla/websocket"
)
func main() {
r := gin.Default()
r.GET("/ws", func(c *gin.Context) {
ws, err := websocket.Upgrade(c.Writer, c.Request, nil, 1024, 1024)
if err != nil {
log.Println(err)
return
}
go handle(ws)
})
r.Run(":8080")
}
func handle(ws *websocket.Conn) {
defer ws.Close()
for {
var msg string
err := ws.ReadJSON(binding.JSON.Binder, &msg)
if err != nil {
log.Println(err)
break
}
log.Println("received message:", msg)
err = ws.WriteJSON(binding.JSON.Binder, gin.H{
"message": "hello, client!",
})
if err != nil {
log.Println(err)
break
}
}
}
```
这个示例中,我们在 /ws 路由下创建了一个 Websocket 连接,然后在 handle 函数中处理相应的逻辑。
需要注意的是,这里使用了 Gorilla 的 Websocket 库,而不是 Gin 自带的库。因为 Gin 自带的库无法读取 JSON 格式的消息。
阅读全文