WebSocket 示例
本示例演示了如何使用 Go Fiber 构建一个简单的 WebSocket 应用。
描述
本项目提供了使用 Go Fiber 构建 WebSocket 服务器的基本设置。它包含了运行实时 WebSocket 服务器所需的配置和代码。
要求
项目结构
main.go
: 应用的主入口点。go.mod
: Go 模块文件。
设置
-
克隆仓库
git clone https://github.com/gofiber/recipes.git
cd recipes/websocket -
安装依赖
go mod download
-
运行应用
go run main.go
应用现在应该正在 http://localhost:3000
上运行。
WebSocket 端点
- GET /ws: 应用的 WebSocket 端点。
使用示例
- 连接到 WebSocket 服务器地址
ws://localhost:3000/ws
。 - 向服务器发送一条消息。
- 服务器会将消息回显给客户端。
代码概览
main.go
主 Go 文件设置了 Fiber 应用,处理 WebSocket 连接,并管理 WebSocket 通信。
package main
import (
"fmt"
"log"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/contrib/websocket"
)
func main() {
app := fiber.New()
// Optional middleware
app.Use("/ws", func(c *fiber.Ctx) error {
if c.Get("host") == "localhost:3000" {
c.Locals("Host", "Localhost:3000")
return c.Next()
}
return c.Status(403).SendString("Request origin not allowed")
})
// Upgraded websocket request
app.Get("/ws", websocket.New(func(c *websocket.Conn) {
fmt.Println(c.Locals("Host")) // "Localhost:3000"
for {
mt, msg, err := c.ReadMessage()
if err != nil {
log.Println("read:", err)
break
}
log.Printf("recv: %s", msg)
err = c.WriteMessage(mt, msg)
if err != nil {
log.Println("write:", err)
break
}
}
}))
// ws://localhost:3000/ws
log.Fatal(app.Listen(":3000"))
}
总结
本示例提供了使用 Go Fiber 构建 WebSocket 服务器的基本设置。可以进一步扩展和定制以满足更复杂应用的需求。