Наследование: WebSocketSharp.Server.WebSocketBehavior
Пример #1
0
        public bool AddAndCheck(Connection connection, double cost)
        {
            lock (_delays)
            {
                double delay;
                if (!_delays.TryGetValue(connection.Address, out delay))
                {
                    if (cost > 0)
                        _delays.Add(connection.Address, Math.Min(cost, DelayLimit));
                }
                else
                {
                    _delays[connection.Address] = Math.Min(delay + cost, DelayLimit);
                }

                var shouldDelay = (delay + cost) >= DelayThreshold;

                if (shouldDelay)
                    connection.SendSysMessage("Too many requests are coming from your location and your request has been canceled. Please wait and try again in a few minutes.");

                return shouldDelay;
            }
        }
Пример #2
0
 public abstract void Handle(Connection connection);
Пример #3
0
        public void Add(Connection connection)
        {
            List<string> rooms;
            bool firstConnection;

            lock (_sync)
            {
                if (_connections.Contains(connection))
                    return;

                _connections.Add(connection);

                connection.Session = this;
                rooms = _rooms.ToList();

                firstConnection = _firstConnection;
                _firstConnection = false;
            }

            foreach (var roomName in rooms)
            {
                var room = Program.RoomManager.Get(roomName);
                if (room == null)
                    continue;

                connection.SendJoinRoom(room);

                if (firstConnection)
                    room.SessionEnter(this);
            }
        }
Пример #4
0
 public void Remove(Connection connection)
 {
     lock (_sync)
     {
         _connections.Remove(connection);
     }
 }
Пример #5
0
 // For RohBot rooms
 public CommandTarget(Connection connection, string room)
 {
     Room       = Program.RoomManager.Get(room);
     Connection = connection;
 }
Пример #6
0
 // For RohBot rooms
 public CommandTarget(Connection connection, string room)
 {
     Room = Program.RoomManager.Get(room);
     Connection = connection;
 }
Пример #7
0
 public bool Check(Connection connection)
 {
     return AddAndCheck(connection, 0);
 }