50 lines
1.3 KiB
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)
|
||
|
}
|
||
|
}
|