gosocketio/server/server.go

50 lines
1.3 KiB
Go

package server
import (
"net/http"
"strconv"
"git.pyer.club/kingecg/gologger"
config "git.pyer.club/kingecg/gosocketio/config"
json "git.pyer.club/kingecg/gosocketio/json"
socketio "github.com/googollee/go-socket.io"
)
var server *socketio.Server
func Luanch() {
logger := gologger.GetLogger("server")
configObj := config.GetConfig()
host := configObj.Host
port := configObj.Port
logger.Debug("socket.io server is about to run on " + host + ":" + strconv.Itoa(port))
server = socketio.NewServer(nil)
server.OnConnect("/", func(s socketio.Conn) error {
s.SetContext("")
logger.Debug("/ connected:", s.ID())
return nil
})
server.OnConnect(configObj.NameSpace, func(s socketio.Conn) error {
s.SetContext("")
logger.Debug("connected:", s.ID())
s.Emit("connect")
return nil
})
server.OnEvent(configObj.NameSpace, "join room", func(s socketio.Conn, msg string) {
var jsonObj = json.JSONObject{}
jsonObj.UnmarshalJSON([]byte(msg))
logger.Debug("join room:", jsonObj.Get("did"))
s.Join(jsonObj.Get("did").(string))
s.Emit("join success", "have "+msg)
})
go server.Serve()
defer server.Close()
http.Handle(configObj.Path, server)
error := http.ListenAndServe(host+":"+strconv.Itoa(port), nil)
if error != nil {
logger.Error("http server start error:", error)
}
}