package main import ( "log" "net" "net/http" "net/rpc" "mongo.games.com/goserver/core" "mongo.games.com/goserver/core/etcd" "mongo.games.com/goserver/core/module" _ "mongo.games.com/game" "mongo.games.com/game/common" _ "mongo.games.com/game/dbproxy/mq" "mongo.games.com/game/dbproxy/svc" "mongo.games.com/game/model" "mongo.games.com/game/mq" _ "mongo.games.com/game/srvdata" ) func main() { // 自定义配置文件 model.InitGameParam() // package模块 defer core.ClosePackages() core.LoadPackages("config.json") // core hook core.RegisteHook(core.HOOK_BEFORE_START, func() error { etcd.Start() mq.StartConsumer(common.CustomConfig.GetString("RabbitMQURL"), common.CustomConfig.GetString("RMQExchange"), true) mq.StartPublisher(common.CustomConfig.GetString("RabbitMQURL"), common.CustomConfig.GetString("RMQExchange"), true, common.CustomConfig.GetInt("RMQPublishBacklog")) // 尝试初始化玩家id svc.GetOnePlayerIdFromBucket() // rpc 服务 rpc.HandleHTTP() // 采用http协议作为rpc载体 lis, err := net.Listen(common.CustomConfig.GetString("MgoRpcCliNet"), common.CustomConfig.GetString("MgoRpcCliAddr")) if err != nil { log.Fatalln("rpc start fatal error: ", err) } go http.Serve(lis, nil) return nil }) core.RegisteHook(core.HOOK_AFTER_STOP, func() error { return nil }) // module模块 w := module.Start() w.Wait("main()") }