타임아웃

흔한 오류 중 하나가 요청 타임아웃입니다. 로컬 머신이 정해진 시간 내에 서버에서 응답을 받지 못하면 이 오류가 발생합니다.

원인은 다음과 같습니다.

  • 클라이언트와 서버 간 연결에 문제 발생: 요청 또는 응답이 전달되지 않음

  • 서버가 요청을 받았지만 내부 오류 때문에 처리하지 못함

  • 서버에서 응답이 왔지만 지연이 너무 길었거나 타임아웃 설정이 너무 짧아서 클라이언트가 거절함

마지막 사례는 타임아웃 값을 늘리면 됩니다.

네트워크 연결 차단이 자주 일어나는데 그때마다 실패 콜백을 하고 싶지 않을 때 이 값을 바꿔도 됩니다. 이 경우 값을 줄일 수 있습니다. 일반적으로 타임아웃은 큰 값과 작은 값 사이에 균형을 유지해야 합니다.

타임아웃은 동작별로 다르게 설정됩니다. 즉, 한 번에 모든 호출을 공통 기본값으로 변경할 수 없다는 뜻입니다.

SDK의 동작 대부분이 이것을 지원합니다. 마지막 인수로 전송된 RequestConfig를 찾아야 합니다. 예를 들어, StrixNetwork 싱글톤의 SetRoomMember에는 다음과 같은 서명이 있습니다.

void SetRoomMember(long memberId, RoomMemberProperties memberProperties, RoomMemberSetEventHandler handler, FailureEventHandler failureHandler, RequestConfig config = null)

config 인수가 무효이면 기본값 30초가 사용됩니다.

RequestConfig 클래스에는 Timeout이라고 하는 필드가 있습니다. 밀리초로 지정되므로 10초 타임아웃을 원한다면 10000으로 설정해야 합니다.

SetRoomMember(
    memberId: 0,
    memberProperties: new RoomMemberProperties { name = "Cliff" },
    handler: null,
    failureHandler: null,
    config: new RequestConfig { Timeout = 10000 }
);