在 Gin 中使用 WebSocket 的完整代码
时间: 2024-05-15 20:14:26 浏览: 184
websocket代码
以下是使用 Gin 框架实现 WebSocket 的完整代码示例:
```go
package main
import (
"fmt"
"net/http"
"github.com/gin-gonic/gin"
"github.com/gorilla/websocket"
)
var (
upgrader = websocket.Upgrader{
ReadBufferSize: 1024,
WriteBufferSize: 1024,
}
)
func main() {
router := gin.Default()
// WebSocket endpoint
router.GET("/ws", func(c *gin.Context) {
conn, err := upgrader.Upgrade(c.Writer, c.Request, nil)
if err != nil {
fmt.Println(err)
return
}
// Handle WebSocket connection
go handleConnection(conn)
})
// Start server
router.Run(":8080")
}
func handleConnection(conn *websocket.Conn) {
defer conn.Close()
for {
// Read message from WebSocket
messageType, p, err := conn.ReadMessage()
if err != nil {
fmt.Println(err)
return
}
// Print message to console
fmt.Printf("Received message: %s\n", string(p))
// Write message back to WebSocket
if err := conn.WriteMessage(messageType, p); err != nil {
fmt.Println(err)
return
}
}
}
```
在此代码中,我们使用 `github.com/gorilla/websocket` 包来创建 WebSocket 连接。
我们首先定义一个 `upgrader` 对象,用于升级 HTTP 连接到 WebSocket 连接。然后,我们在路由中创建了 `/ws` 端点,当客户端发起 WebSocket 连接时,将升级连接并调用 `handleConnection` 函数来处理连接。
在 `handleConnection` 函数中,我们使用一个无限循环来接收客户端发送的消息,并将其打印到控制台上。然后,我们将同样的消息发送回到客户端。
最后,我们启动 Gin 服务器并监听端口 `8080`。
阅读全文