42 lines
		
	
	
		
			729 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			729 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| 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.Static("/", "../public")
 | |
| 	e.GET("/ws", hello)
 | |
| 	e.Logger.Fatal(e.Start(":1323"))
 | |
| }
 | 
