Golang中如何使用googollee/go-socket.io与Gin框架集成
Golang中如何使用googollee/go-socket.io与Gin框架集成 我想知道如何将 socket.io 与 Gin Gonic 结合使用。
package main
import (
"github.com/gin-gonic/gin"
"github.com/googollee/go-socket.io"
)
func main() {
r := gin.Default()
r.GET("/ping", socketioFunc)
r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}
func socketioFunc(c *gin.Context) {
//SOCKET IO STOFF
c.JSON(200, gin.H{
"message": "pong",
})
}
更多关于Golang中如何使用googollee/go-socket.io与Gin框架集成的实战教程也可以访问 https://www.itying.com/category-94-b0.html
6 回复
这个功能正常吗?如果不行,具体是哪里出了问题?
更多关于Golang中如何使用googollee/go-socket.io与Gin框架集成的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
你好,socket.io 的代码缺失了,因为我不知道如何实现。
是的,但我必须将其与 Gin Gonic 一起使用,并且需要在另一个函数中。
祝你好运。
意思是:“我必须”可能不足以说服库去做一些它们并非为此设计的事情(具体是什么?)。
要将 googollee/go-socket.io 与 Gin 框架集成,你需要使用 socket.io 的服务器实例来处理 WebSocket 连接,并将 Gin 的路由与 Socket.IO 的路由分开处理。以下是一个完整的示例:
package main
import (
"log"
"net/http"
"github.com/gin-gonic/gin"
socketio "github.com/googollee/go-socket.io"
)
func main() {
// 创建 Gin 路由器
router := gin.Default()
// 创建 Socket.IO 服务器
server, err := socketio.NewServer(nil)
if err != nil {
log.Fatal(err)
}
// 处理 Socket.IO 连接事件
server.OnConnect("/", func(s socketio.Conn) error {
s.SetContext("")
log.Println("connected:", s.ID())
return nil
})
server.OnEvent("/", "notice", func(s socketio.Conn, msg string) {
log.Println("notice:", msg)
s.Emit("reply", "have "+msg)
})
server.OnError("/", func(s socketio.Conn, e error) {
log.Println("meet error:", e)
})
server.OnDisconnect("/", func(s socketio.Conn, reason string) {
log.Println("closed", reason)
})
// 启动 Socket.IO 服务器协程
go server.Serve()
defer server.Close()
// 设置 Gin 路由
router.GET("/socket.io/*any", gin.WrapH(server))
router.POST("/socket.io/*any", gin.WrapH(server))
// 普通 HTTP 路由
router.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
// 启动 HTTP 服务器
log.Println("Server starting on :8080")
log.Fatal(http.ListenAndServe(":8080", router))
}
这个示例展示了如何:
客户端连接时需要使用 Socket.IO 客户端库,连接地址为 ws://localhost:8080/socket.io/。


