package webssh

import (
	"net/http"
	"strconv"

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

	"cocogo/pkg/config"
	"cocogo/pkg/logger"
)

var (
	conf       = config.Conf
	httpServer *http.Server
)

func StartWebsocket() {
	server, err := socketio.NewServer(nil)
	if err != nil {
		logger.Fatal(err)
	}
	server.OnConnect("/ssh", OnConnectHandler)
	server.OnError("/ssh", OnErrorHandler)
	server.OnEvent("/ssh", "host", OnHostHandler)
	server.OnEvent("/ssh", "token", OnTokenHandler)
	server.OnEvent("/ssh", "data", OnDataHandler)
	server.OnEvent("/ssh", "resize", OnResizeHandler)
	server.OnEvent("/ssh", "logout", OnLogoutHandler)

	go server.Serve()
	defer server.Close()

	http.Handle("/socket.io/", server)
	logger.Debug("start Websocket Serving")
	httpServer = &http.Server{Addr: conf.BindHost + ":" + strconv.Itoa(conf.SSHPort), Handler: nil}
	logger.Fatal(httpServer.ListenAndServe())

}

func OnConnectHandler(s socketio.Conn) error {
	return nil

}
func OnErrorHandler(e error) {

}

func OnHostHandler(s socketio.Conn, message HostMsg) {

}

func OnTokenHandler(s socketio.Conn, message TokenMsg) {

}

func OnDataHandler(s socketio.Conn, message DataMsg) {

}

func OnResizeHandler(s socketio.Conn, message ReSizeMsg) {

}

func OnLogoutHandler(s socketio.Conn, message string) {
	// message: room

}