使用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>

 

posted @ 2019-05-25 13:34  Jin同学  阅读(155)  评论(0)    收藏  举报