コード例 #1
0
        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)));
                                                         }));
        }
コード例 #2
0
        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)));
        }