使用websocket
使用 net 库的 WebSocket
服务端
server.go
package main
import (
"fmt"
"github.com/labstack/echo"
"github.com/labstack/gommon/log"
"golang.org/x/net/websocket"
)
func main() {
e := echo.New()
e.File("/", "template/socket.html")
e.GET("/ws", wsTest)
e.Logger.Fatal(e.Start(":1323"))
}
func wsTest(c echo.Context) error {
websocket.Handler(func(ws *websocket.Conn) {
defer ws.Close()
for {
// Write
err := websocket.Message.Send(ws, "Hello, Client!")
if err != nil {
log.Fatal(err)
}
// Read
msg := ""
err = websocket.Message.Receive(ws, &msg)
if err != nil {
log.Fatal(err)
}
fmt.Println(msg)
}
}).ServeHTTP(c.Response(), c.Request())
return nil
}
客户端
index.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>WebSocket</title>
</head>
<body>
<p id="output"></p>
<script>
let ws = new WebSocket("ws://127.0.0.1:1323/ws");
ws.onopen = function () {
console.log('Connected')
};
ws.onmessage = function (evt) {
var out = document.getElementById('output');
out.innerHTML += evt.data + '<br>';
};
setInterval(function () {
ws.send('Hello, Server!');
}, 1000);
</script>
</body>
</html>

浙公网安备 33010602011771号