package main

import (
	"fmt"

	"gopkg.in/kataras/iris.v6"
	"gopkg.in/kataras/iris.v6/adaptors/httprouter"
	"gopkg.in/kataras/iris.v6/adaptors/websocket"
)

func handleConnection(c websocket.Connection) {

	// Read events from browser
	c.On("chat", func(msg string) {

		// Print the message to the console
		fmt.Printf("%s sent: %s\n", c.Context().RemoteAddr(), msg)

		// Write message back to browser
		c.Emit("chat", msg)
	})

}

func main() {
	app := iris.New()
	app.Adapt(iris.DevLogger())
	app.Adapt(httprouter.New())

	// create our echo websocket server
	ws := websocket.New(websocket.Config{
		ReadBufferSize:  1024,
		WriteBufferSize: 1024,
		Endpoint:        "/echo",
	})

	ws.OnConnection(handleConnection)

	// Adapt the websocket server.
	// you can adapt more than one of course.
	app.Adapt(ws)

	app.Get("/", func(ctx *iris.Context) {
		ctx.ServeFile("websockets.html", false) // second parameter: enable gzip?
	})

	app.Listen(":8080")
}