Documentation ¶
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func TransformToWS ¶
func TransformToWS(wsFunc WSHandlerFunc, responseHeader http.Header, wrappers []WSConnWrapper) gin.HandlerFunc
TransformToWS 将 Gin 的 HTTP 连接转换为 WebSocket 连接 他接受一个 WSHandlerFunc 用来处理具体的 WebSocket 事务。
Example ¶
package main import ( "fmt" "github.com/gin-gonic/gin" "github.com/gorilla/websocket" "github.com/robfig/cron/v3" "log" ) func main() { go func() { c := cron.New(cron.WithSeconds()) _, _ = c.AddFunc("* * * * * *", task) c.Start() }() log.SetFlags(log.Lshortfile | log.LstdFlags) var router = gin.Default() router.GET("/ws", TransformToWS(ping, nil, []WSConnWrapper{SaveConn})) if err := router.Run(":8888"); err != nil { log.Println(err) } } func SaveConn(ws *websocket.Conn) { webSocketConnList = append(webSocketConnList, ws) } var webSocketConnList = make([]*websocket.Conn, 0) var canvas string var canvasVersion int func ping(ws *websocket.Conn) { for { _, message, err := ws.ReadMessage() fmt.Println(string(message)) if err != nil { break } canvas += string(message) canvasVersion++ } } var version = 0 func task() { if version == canvasVersion { return } for _, conn := range webSocketConnList { fmt.Println(canvas) err := conn.WriteMessage(websocket.TextMessage, []byte(canvas)) if err != nil { break } version = canvasVersion } }
Output:
Types ¶
type WSConnWrapper ¶
type WSHandlerFunc ¶
Click to show internal directories.
Click to hide internal directories.