public HeadServer() { var name = "Head1"; Logger.Start(name); qManager = new QueueManager(name, new QueueManagerOptions(new[] { new QueueWatcher("HeadServer", null), new QueueWatcher(name, null), }, new[] { "GatewayServer" })); fs.ReadFile(__dirname + "/index.html", "ascii", ready); pubsub = new PubSub(() => pubsub.Subscribe<string>("PUBSUB.GatewayServers", message => { indexForSites.Add(indexPageData.Replace("{{gateway}}", message)); gateways.Add(message); })); Global.Require<Http>("http").CreateServer(handlerWS).Listen(8844); Global.SetInterval(pollGateways, 5000); pollGateways(); }
private void Setup() { qManager = new QueueManager(SiteServerIndex, new QueueManagerOptions(new[] { new QueueWatcher("SiteServer", null), new QueueWatcher(SiteServerIndex, null), }, new[] { "ChatServer", "GameServer", "SiteServer", "GatewayServer", "Gateway*" })); qManager.AddChannel("Area.Site.Login", (user, data) => OnUserLogin(user, (SiteLoginRequest)data)); qManager.AddChannel("Area.Site.CreateUser", (user, data) => OnUserCreate(user, (SiteCreateUserRequest)data)); qManager.AddChannel("Area.Site.GetGameTypes", (user, data) => OnGetGameTypes(user)); qManager.AddChannel("Area.Site.GetRooms", (user, data) => OnGetRooms(user, (GetRoomsRequest)data)); qManager.AddChannel("Area.Site.GetRoomInfo", (user, data) => OnGetRoomInfo(user, (GetRoomInfoRequest)data)); qManager.AddChannel("Area.Site.CreateRoom", (user, data) => OnCreateRoom(user, (CreateRoomRequest)data)); qManager.AddChannel("Area.Site.LeaveRoom", (user, data) => OnLeaveRoom(user, (LeaveRoomRequest)data)); qManager.AddChannel("Area.Site.JoinRoom", (user, data) => OnJoinRoom(user, (RoomJoinRequest)data)); qManager.AddChannel("Area.Site.StartGame", (user, data) => OnStartGame(user, (StartGameRequest)data)); qManager.AddChannel("Area.Site.UserDisconnect", (user, data) => OnUserDisconnect(user, (UserDisconnectModel)data)); qManager.AddChannel("Area.Site.GetGamesByUser", (user, data) => OnGetGamesByUser(user, (GetGamesByUserRequest)data)); qManager.AddChannel("Area.Site.DoesGameNameExist", (user, data) => OnDoesGameNameExist(user, (DoesGameExistRequest)data)); qManager.AddChannel("Area.Site.DeveloperCreateGame", (user, data) => OnDeveloperCreateGame(user, (DeveloperCreateGameRequest)data)); qManager.AddChannel("Area.Site.DeveloperUpdateGame", (user, data) => OnDeveloperUpdateGame(user, (DeveloperUpdateGameRequest)data)); }
private void Setup() { qManager = new QueueManager(GameServerIndex, new QueueManagerOptions(new[] { new QueueWatcher("GameServer", null), new QueueWatcher(GameServerIndex, null), }, new[] { "GameServer", "GatewayServer", "Gateway*" })); qManager.AddChannel("Area.Game.Create", (user, data) => OnGameCreate((GameCreateRequestModel)data)); qManager.AddChannel("Area.Game.AnswerQuestion", (user, data) => OnUserAnswerQuestion(user, (GameAnswerQuestionModel)data)); qManager.AddChannel("Area.Game.UserDisconnect", (user, data) => OnUserDisconnect(user, (UserDisconnectModel)data)); qManager.AddChannel("Area.Game.LeaveGameRoom", (user, data) => OnUserLeave(user, (UserLeaveModel)data)); }
private void Setup() { qManager = new QueueManager(ChatServerIndex, new QueueManagerOptions(new[] { new QueueWatcher("ChatServer", null), new QueueWatcher(ChatServerIndex, null), }, new[] { "ChatServer", "GatewayServer", "Gateway*" })); qManager.AddChannel("Area.Chat.CreateChatRoom", (user, data) => OnCreateChatChannel(user, (CreateChatRoomRequest) data)); qManager.AddChannel("Area.Chat.JoinChatRoom", (user, data) => OnJoinChatChannel(user, (JoinChatRoomRequest) data)); qManager.AddChannel("Area.Chat.SendMessage", (user, data) => OnSendMessage(user, (SendChatMessageModel) data)); qManager.AddChannel("Area.Chat.UserDisconnect", (user, data) => OnUserDisconnect(user, (UserDisconnectModel) data)); qManager.AddChannel("Area.Chat.LeaveChatRoom", (user, data) => OnLeaveChatRoom(user)); }
private void Setup() { qManager = new QueueManager(DebugGameServerIndex, new QueueManagerOptions(new[] { new QueueWatcher("DebugServer", null), new QueueWatcher(DebugGameServerIndex, null), }, new[] { "DebugServer", "GatewayServer", "Gateway*" })); qManager.AddChannel("Area.Debug.Create", (user, data) => OnGameCreate(user, (CreateDebugGameRequest)data)); qManager.AddChannel("Area.Debug.DebugResponse", (user, data) => OnHandleDebugResponse(user, (DebugResponse)data)); qManager.AddChannel("Area.Debug.Destroy", (user, data) => OnGameDestroy(user, (DestroyDebugGameRequest)data)); qManager.AddChannel("Area.Debug.AnswerQuestion", (user, data) => OnUserAnswerQuestion(user, (DebugGameAnswerQuestionModel)data)); qManager.AddChannel("Area.Debug.UserDisconnect", (user, data) => OnUserDisconnect(user, (UserDisconnectModel)data)); qManager.AddChannel("Area.Debug.LeaveGameRoom", (user, data) => OnUserLeave(user, (UserLeaveModel)data)); }
public GameServer() { fs = Global.Require<FS>("fs"); childProcess = Global.Require<ChildProcess>("child_process"); dataManager = new DataManager(); gameServerIndex = "GameServer" + Guid.NewGuid(); cachedGames = new JsDictionary<string, GameObject>(); Global.Require<NodeModule>("fibers"); rooms = new List<GameRoom>(); gameData = new GameData(); Global.Process.On("exit", () => Console.Log("exi")); /*qManager.AddChannel("Area.Game.Create", (arg1, arg2) => { GameRoom room; rooms.Add(room = new GameRoom()); });*/ qManager = new QueueManager(gameServerIndex, new QueueManagerOptions(new[] { new QueueWatcher("GameServer", null), new QueueWatcher(gameServerIndex, null), }, new[] { "GameServer", "GatewayServer", "Gateway*" })); qManager.AddChannel<SomeModel>("SomeNamespaceOrEnum??", (user, data) => { EmitAll(room, "Area.Game.UpdateState", new Compressor().CompressText(Json.Stringify(room.Game.CardGame.CleanUp()))); var user = getPlayerByUsername(room, answ.User.UserName); qManager.SendMessage(user, user.Gateway, "Area.Game.AskQuestion", gameAnswer.CleanUp()); }); }
public GatewayServer() { myGatewayName = "Gateway " + Guid.NewGuid(); /* var charm = Charmer.Setup(); var prog = new ProgressBar(charm, 0, 100) {X = 5, Y = 5, Width = 10, CurValue = 12}; Global.SetInterval(() => { prog.CurValue++; },200); */ ServerLogger.InitLogger("GatewayServer",myGatewayName); Logger.Start(myGatewayName); //ExtensionMethods.debugger(""); var http = Global.Require<Http>("http"); var app = http.CreateServer((req, res) => res.End()); var io = Global.Require<SocketIO>("socket.io").Listen(app); var fs = Global.Require<FS>("fs"); QueueManager queueManager; var port = 1800 + Math.Truncate((Math.Random() * 4000d)); port = 1800; string currentSubdomain = "gateway1"; string currentIP = ServerHelper.GetNetworkIPs()[0] + ":" + port; string content; if (Constants.Local) content = string.Format("http://{0}", currentIP); else content = string.Format("http://{0}.{1}", currentSubdomain, "anycardgame.com"); ServerLogger.LogInformation("Server URL", content); app.Listen(port); io.Set("log level", 0); new PubSub((ps) => { ps.Subscribe ("PUBSUB.GatewayServers.Ping", message => { ps.Publish("PUBSUB.GatewayServers", content); // ps.Publish("PUBSUB.GatewayServers", string.Format("http://{0}:{1}", currentIP, port)); }); // ps.Publish("PUBSUB.GatewayServers", string.Format("http://{0}:{1}", currentIP, port)); ps.Publish("PUBSUB.GatewayServers", content); }); queueManager = new QueueManager(myGatewayName, new QueueManagerOptions(new[] { new QueueWatcher("GatewayServer", messageReceived), new QueueWatcher(myGatewayName, messageReceived) }, new[] { "SiteServer", "GameServer*", "GameServer", "DebugServer", "ChatServer", "ChatServer*", "HeadServer" })); io.Sockets.On("connection", (SocketIOConnection socket) => { var j = ++curc; ServerLogger.LogDebug("Socket Connected " + j,null); UserSocketModel user = null; socket.On("Gateway.Message", (GatewayMessageModel data) => { if (user == null) return; ServerLogger.LogDebug("Socket message " + j + " ", new {data, user}); var channel = "Bad"; switch (data.Channel.Split('.')[1]) { case "Game": channel = user.CurrentGameServer ?? "GameServer"; break; case "Site": channel = "SiteServer"; break; case "Debug": channel = user.CurrentDebugServer ?? "DebugServer"; break; case "Chat": channel = user.CurrentChatServer ?? "ChatServer"; break; } queueManager.SendMessage(channel, data.Channel, user.ToLogicModel(), data.Content); }); socket.On("Gateway.Login", (GatewayLoginMessageModel data) => { //ExtensionMethods.debugger(); user = new UserSocketModel(); user.Password = data.Password; user.Socket = socket; user.UserName = data.UserName; user.Hash = data.UserName; user.Gateway = myGatewayName; ServerLogger.LogDebug("Socket login " + j, new { data, user }); users[data.UserName] = user; queueManager.SendMessage("SiteServer", "Area.Site.Login", user.ToLogicModel(), new SiteLoginRequest(user.Hash)); }); socket.On("disconnect", (string data) => { if (user == null) return; ServerLogger.LogDebug("Socket Left " + j, new { data, user }); queueManager.SendMessage("SiteServer", "Area.Site.UserDisconnect", user.ToLogicModel(), new UserDisconnectModel(user.ToLogicModel())); //disconnecting from the room in site server disconencts from chat.. // if (user.CurrentChatServer != null) // queueManager.SendMessage(user.ToLogicModel(), user.CurrentChatServer, "Area.Chat.UserDisconnect", new UserDisconnectModel(user.ToLogicModel())); if (user.CurrentGameServer != null) queueManager.SendMessage(user.CurrentGameServer, "Area.Game.UserDisconnect", user.ToLogicModel(), new UserDisconnectModel(user.ToLogicModel())); if (user.CurrentDebugServer != null) queueManager.SendMessage(user.CurrentDebugServer, "Area.Debug.UserDisconnect", user.ToLogicModel(), new UserDisconnectModel(user.ToLogicModel())); users.Remove(user.UserName); socket.RemoveAllListeners(); //socket.Delete(); io.Sockets.Sockets.Remove(socket.ID); curc--; }); }); }
public MonitorServer() { myGatewayName = "Gateway " + Guid.NewGuid(); Logger.Start(myGatewayName); //ExtensionMethods.debugger(""); var http = Global.Require<Http>("http"); var app = http.CreateServer((req, res) => res.End()); var io = Global.Require<SocketIO>("socket.io").Listen(app); var fs = Global.Require<FS>("fs"); QueueManager queueManager; var port = 1800 + Math.Truncate((int)(Math.Random() * 4000)); string currentIP = ServerHelper.GetNetworkIPs()[0]; Console.Log(currentIP); app.Listen(port); io.Set("log level", 0); ps = new PubSub(() => { ps.Subscribe<string>("PUBSUB.GatewayServers.Ping", message => { ps.Publish("PUBSUB.GatewayServers", string.Format("http://{0}:{1}", currentIP, port)); }); ps.Publish("PUBSUB.GatewayServers", string.Format("http://{0}:{1}", currentIP, port)); }); queueManager = new QueueManager(myGatewayName, new QueueManagerOptions(new[] { new QueueWatcher("MonitorServer", messageReceived), new QueueWatcher(myGatewayName, messageReceived) }, new[] { "SiteServer", "GameServer*", "GameServer", "DebugServer", "ChatServer", "ChatServer*", "HeadServer" })); io.Sockets.On("connection", (SocketIOConnection socket) => { UserSocketModel user = null; socket.On("Gateway.Message", (GatewayMessageModel data) => { if (user == null) return; var channel = "Bad"; switch (data.Channel.Split('.')[1]) { case "Game": channel = user.CurrentGameServer ?? "GameServer"; break; case "Site": channel = "SiteServer"; break; case "Debug": channel = user.CurrentGameServer ?? "GameServer"; break; case "Debug2": channel = "DebugServer"; break; case "Chat": channel = user.CurrentChatServer ?? "ChatServer"; break; } queueManager.SendMessage(channel, data.Channel, user.ToLogicModel(), data.Content); }); socket.On("Gateway.Login", (GatewayLoginMessageModel data) => { user = new UserSocketModel(); user.Password = data.Password; user.Socket = socket; user.UserName = data.UserName; user.Hash = data.UserName; user.Gateway = myGatewayName; users[data.UserName] = user; queueManager.SendMessage("SiteServer", "Area.Site.Login", user.ToLogicModel(), new SiteLoginRequest(user.Hash)); }); socket.On("disconnect", (string data) => { if (user == null) return; queueManager.SendMessage("SiteServer", "Area.Site.UserDisconnect", user.ToLogicModel(), new UserDisconnectModel(user.ToLogicModel())); //disconnecting from the room in site server disconencts from chat.. // if (user.CurrentChatServer != null) // queueManager.SendMessage(user.ToLogicModel(), user.CurrentChatServer, "Area.Chat.UserDisconnect", new UserDisconnectModel(user.ToLogicModel())); if (user.CurrentGameServer != null) queueManager.SendMessage(user.CurrentGameServer, "Area.Game.UserDisconnect", user.ToLogicModel(), new UserDisconnectModel(user.ToLogicModel())); users.Remove(user.UserName); }); }); }