RateLimitService

스크립트 및 네이티브 API의 사용량을 제한하는 기능을 제공합니다.

# Methods

[{"index":"void SetServerFunctionRateLimitForComponent(string entityId, string componentName, string functionName, int32 maxToken, float tokenRefillPerSecond) (ServerOnly)","0":"특정 엔티티에 속한 컴포넌트의 server 실행 제어 함수 호출량을 제한합니다. 유저가 함수를 호출할 때마다 토큰이 1개씩 차감됩니다. 토큰을 모두 사용하면 해당 유저의 함수 호출이 제한됩니다. maxToken은 최대 토큰 수, tokenRefillPerSecond는 초당 재충전되는 토큰 수입니다."}]

[{"index":"void SetServerFunctionRateLimitForLogic(string logicName, string functionName, int32 maxToken, float tokenRefillPerSecond) (ServerOnly)","0":"로직의 server 실행 제어 함수 호출량을 제한합니다. 유저가 함수를 호출할 때마다 토큰이 1개씩 차감됩니다. 토큰을 모두 사용한 유저는 함수 호출이 제한됩니다. maxToken은 최대 토큰 수, tokenRefillPerSecond는 초당 재충전되는 토큰 수입니다."}]

[{"index":"void SetServerFunctionRateLimitForService(string serviceName, string functionName, int32 maxToken, float tokenRefillPerSecond) (ServerOnly)","0":"서비스의 server 실행 제어 함수 호출량을 제한합니다. 유저가 함수를 호출할 때마다 토큰이 1개씩 차감됩니다. 토큰을 모두 사용한 유저의 함수 호출이 제한됩니다. maxToken은 최대 토큰 수, tokenRefillPerSecond는 초당 재충전되는 토큰 수입니다."}]

[{"index":"void SetTotalServerFunctionRateLimit(int32 maxToken, float tokenRefillPerSecond) (ServerOnly)","0":"server 실행 제어 함수들의 총 호출량을 제한합니다. 유저가 컴포넌트, 서비스, 로직의 server 함수를 호출할 때마다 토큰이 1개씩 차감됩니다. 토큰을 모두 사용한 유저의 모든 server 함수 호출이 제한됩니다. maxToken은 최대 토큰 수, tokenRefillPerSecond는 초당 재충전되는 토큰 수입니다."}]

##### inherited from Service:

[{"index":"EventHandlerBase ConnectEvent(string key, IScriptFunction eventHandler)","0":"이벤트를 연결합니다. 이 서비스에서 타입의 이름이 key인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다."}]

[{"index":"EventHandlerBase ConnectEvent(Type eventType, IScriptFunction eventHandler)","0":"이벤트를 연결합니다. 이 서비스에서 타입이 eventType인 이벤트가 발생하면, 핸들러로 통지받습니다. 핸들러는 event 매개 변수를 전달받습니다."}]

[{"index":"boolean DisconnectEvent(string key, EventHandlerBase eventHandler)","0":"타입의 이름이 key인 이벤트와 핸들러와의 이벤트 연결을 끊습니다."}]

[{"index":"boolean DisconnectEvent(Type eventType, EventHandlerBase eventHandler)","0":"타입이 eventType인 이벤트와 핸들러와의 연결을 끊습니다."}]

[{"index":"void SendEvent(EventType sendEvent)","0":"이벤트를 발생시킵니다."}]

# Events

[{"index":"ServerFunctionRateLimitEvent","0":"특정 컴포넌트, 서비스, 로직의 server 실행 제어 함수의 호출량이 제한을 초과했을 때 발생하는 이벤트입니다."}]

[{"index":"TotalServerFunctionRateLimitEvent","0":"server 실행 제어 함수의 총 호출량이 제한을 초과했을 때 발생하는 이벤트입니다."}]

# Examples

server 함수 제한을 설정하는 예제입니다. 설정한 제한은 해당 룸에서만 동작하기 때문에 Logic에서 관리하는 것을 권장합니다.
    
    
    @Component
    script ServerRateLimitManager extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
        -- TeleportService의 TeleportToEntityPath 함수에 제한을 설정합니다.
        _RateLimitService:SetServerFunctionRateLimitForService("TeleportService", "TeleportToEntityPath", 3, 0.1)
    
        -- 직접 만든 스크립트에도 제한을 설정할 수있습니다.
        _RateLimitService:SetServerFunctionRateLimitForLogic("MyLogic", "MyFunction", 3, 0.1)
    
        -- 특정 함수가 아닌, 모든 Server 실행 제어 함수의 호출량을 제한할 수도 있습니다.
        _RateLimitService:SetTotalServerFunctionRateLimit(10, 1)
        end
    
        @ExecSpace("ServerOnly")
        @EventSender("Service", "UserService")
        handler HandleUserEnterEvent(UserEnterEvent event)
        --------------- Native Event Sender Info ----------------
        -- Sender: UserService
        -- Space: Server
        ---------------------------------------------------------
    
        -- Parameters
        local ProfileCode = event.ProfileCode
        local UserId = event.UserId
        ---------------------------------------------------------
    
        -- 유저가 입장하면 PlayerComponent의 MoveToEntityByPath 함수에 제한을 설정합니다.
        local userEntity = _UserService:GetUserEntityByUserId(UserId)
        _RateLimitService:SetServerFunctionRateLimitForComponent(userEntity.Id, "PlayerComponent", "MoveToEntityByPath", 3, 0.1)
        end
    end