go get github.com/gorilla/websocket
import (
"fmt"
"github.com/gorilla/websocket"
)
var Wss = new(webSocketServer)
func init() {
Wss.Msg = make(chan []byte)
}
type webSocketServer struct {
Ws *websocket.Conn
Msg chan []byte//将要发给前端的数据放入管道就会触发发送动作
}
//发数据
func (wss *webSocketServer) Writer() {
for message := range wss.Msg {
fmt.Println("wss=>", message)
wss.Ws.WriteMessage(websocket.TextMessage, message)
}
}
import (
"github.com/gin-gonic/gin"
"github.com/gorilla/websocket"
"net/http"
"robot-pcshare/service/system"
)
var upGrader = &websocket.Upgrader{
ReadBufferSize: 512,
WriteBufferSize: 512,
CheckOrigin: func(r *http.Request) bool { return true },
}
//webSocket请求什么什么
func Ping(c *gin.Context) {
//升级get请求为websocket协议
ws, err := upGrader.Upgrade(c.Writer, c.Request, nil)
if err != nil {
return
}
defer ws.Close()
system.Wss.Ws = ws
system.Wss.Writer()
}
路由注册
import (
"fmt"
"github.com/gin-gonic/gin"
"net/http"
)
func InitRouter() {
var Router = gin.Default()
Router.Use(middleware.Cors())
Router.GET("/ws", controller.Ping)
if err := http.ListenAndServe("0.0.0.0:8080", Router); err != nil {
fmt.Println("err:", err)
}
}
vue前端
案例1



