github地址:https://github.com/gin-gonic/gin
go get github.com/gin-gonic/gin
gorilla擁有很多類庫(kù)边翼,這次我們使用的是它的webSocket
go get github.com/gorilla/websocket
package main
import (
"github.com/gin-gonic/gin"
"github.com/gorilla/websocket"
"net/http"
)
var upGrader = websocket.Upgrader{
CheckOrigin: func (r *http.Request) bool {
return true
},
}
//webSocket請(qǐng)求ping 返回pong
func ping(c *gin.Context) {
//升級(jí)get請(qǐng)求為webSocket協(xié)議
ws, err := upGrader.Upgrade(c.Writer, c.Request, nil)
if err != nil {
return
}
defer ws.Close()
for {
//讀取ws中的數(shù)據(jù)
mt, message, err := ws.ReadMessage()
if err != nil {
break
}
if string(message) == "ping" {
message = []byte("pong")
}
//寫入ws數(shù)據(jù)
err = ws.WriteMessage(mt, message)
if err != nil {
break
}
}
}
func main() {
bindAddress := "localhost:2303"
r := gin.Default()
r.GET("/ping", ping)
r.Run(bindAddress)
}
前端js代碼
<script>
var ws = new WebSocket("ws://localhost:2303/ping");
//連接打開時(shí)觸發(fā)
ws.onopen = function(evt) {
console.log("Connection open ...");
ws.send("Hello WebSockets!");
};
//接收到消息時(shí)觸發(fā)
ws.onmessage = function(evt) {
console.log("Received Message: " + evt.data);
};
//連接關(guān)閉時(shí)觸發(fā)
ws.onclose = function(evt) {
console.log("Connection closed.");
};
</script>