public GatewayServer() { var app = Http.CreateServer((req, res) => res.End()); var io = SocketIO.Listen(app); var port = 1800 + Math.Truncate((int) ( Math.Random() * 4000 )); app.Listen(port); io.Set("log level", 1); var myName = "Gateway " + Guid.NewGuid(); io.Sockets.On("connection", new Action<SocketIOConnection>((socket) => { GatewayUserModel user = null; socket.On("Gateway.Message", new Action<GatewayMessageModel>(data => { })); socket.On("Gateway.Login", new Action<GatewayLoginMessageModel>((data) => { user = new GatewayUserModel(); user.Socket = socket; user.UserName = data.UserName; users[data.UserName] = user; socket.Emit("Area.Main.Login.Response", "hi! " + data.UserName); })); socket.On("disconnect", new Action<string>((string data) => users.Remove(user.UserName))); })); }
private void userJoin(SocketIOConnection socket) { GatewayUserModel user = null; socket.On("Gateway.Message", new Action<GatewayMessageModel>((data) => { if (user == null) { Global.Console.Log("no user found: " + data.Stringify()); return; } var channel = user.GameServer; switch (data.Channel) { case "Game": channel = user.GameServer; break; case "Chat": channel = user.ChatServer ?? "ChatServer"; break; } queueManager.SendMessage(user, channel, data.Content); })); socket.On("Gateway.Login", new Action<GatewayLoginMessageModel>((data) => { user = new GatewayUserModel(); user.Socket = socket; user.UserName = data.UserName; user.Gateway = myName; users[data.UserName] = user; queueManager.SendMessage(user, "GameServer", new PlayerJoinMessage()); })); socket.On("disconnect", new Action<string>((data) => users.Remove(user.UserName))); }