代码拉取完成,页面将自动刷新
package main
import (
"fmt"
"github.com/gin-contrib/cors"
"github.com/gin-gonic/gin"
socketio "github.com/googollee/go-socket.io"
. "xm_shop/database"
. "xm_shop/routers"
)
func main() {
r := gin.Default()
// 配置gin允许跨域请求
r.Use(cors.Default())
InitSession(r) // 注意session要先配置, 因为下面要用到session
InitMysql()
InitAdminRouters(r)
InitDefaultRouter(r)
// 配置静态路由
r.Static("/static", "./static")
// 初始化socket
InitSocket(r)
r.Run(":8001")
}
// 初始化socketio
func InitSocket(r *gin.Engine) {
// 配置socket.io服务对象
server := socketio.NewServer(nil)
// 监听客户端连接事件
server.OnConnect("/", func(s socketio.Conn) error {
s.SetContext("")
fmt.Println("connected:", s.ID())
return nil
})
// 监听客户端广播
server.OnEvent("/", "notice", func(s socketio.Conn, msg string) {
fmt.Println("notice:", msg)
s.Emit("reply", "have--:"+msg)
// 通过命名空间进行广播 广播和单独发送可以同时存在
server.BroadcastToNamespace("/", "reply", "这是一个广播")
})
// 启动socket服务
go server.Serve()
// 如果你要把初始化socket封装成一个函数, 这句应该去掉, 因为函数一执行完毕就触发server.Close()将服务销毁了
//defer server.Close()
// 配置socket路由
r.GET("/socket.io/", gin.WrapH(server)) // 等效http.Handle("/socket.io/", server)
r.POST("/socket.io/", gin.WrapH(server))
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。