package main import ( "fmt" "log" "github.com/labstack/echo" "github.com/labstack/echo/middleware" "golang.org/x/net/websocket" ) func hello(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.Printf("%s\n", msg) } }).ServeHTTP(c.Response(), c.Request()) return nil } func main() { e := echo.New() e.Use(middleware.Logger()) e.Use(middleware.Recover()) e.Use(middleware.Static("../public")) e.GET("/ws", hello) if err := e.Start(":1323"); err != nil { e.Logger.Fatal(err) } }