package main

import (
	"github.com/kataras/iris"

	"github.com/googollee/go-socket.io"
)

/*
	go get -u github.com/googollee/go-socket.io
*/

func main() {
	app := iris.New()
	server, err := socketio.NewServer(nil)
	if err != nil {
		app.Logger().Fatal(err)
	}

	server.On("connection", func(so socketio.Socket) {
		app.Logger().Infof("on connection")
		so.Join("chat")
		so.On("chat message", func(msg string) {
			app.Logger().Infof("emit: %v", so.Emit("chat message", msg))
			so.BroadcastTo("chat", "chat message", msg)
		})
		so.On("disconnection", func() {
			app.Logger().Infof("on disconnect")
		})
	})

	server.On("error", func(so socketio.Socket, err error) {
		app.Logger().Errorf("error: %v", err)
	})

	// serve the socket.io endpoint.
	app.Any("/socket.io/{p:path}", iris.FromStd(server))

	// serve the index.html and the javascript libraries at
	// http://localhost:8080
	app.HandleDir("/", "./public")

	app.Run(iris.Addr("localhost:8080"), iris.WithoutPathCorrection)
}
