기술 자료

지원

Lobby

Lobby

로비 하트비트

Send heartbeat requests to keep a lobby active and prevent it from being marked as inactive or deleted.
읽는 시간 1분최근 업데이트: 한 달 전

로비가 특정 시간 이내에 업데이트되지 않거나 호스트가 하트비트 요청을 전송하지 않은 경우 비활성으로 표시됩니다. 로비의 기본 활성 수명 주기는 30초입니다. 프로젝트에서 로비의 활성 수명 주기를 설정할 수 있습니다. 비활성 로비가 표시되지 않도록 하는 주된 이유는 플레이어가 사용되지 않는 로비를 계속 찾거나 참여하는 것을 방지하기 위해서입니다. 비활성 공개 로비는 쿼리 결과에 표시되지 않으며, 더불어 ‘빠른 참여’를 통해서도 참여할 수 없습니다. 공개 비활성 로비와 비공개 비활성 로비 모두 결국에는 자동으로 삭제됩니다. 비활성 로비를 업데이트하거나 호스트가 하트비트 요청을 전송하면 다시 활성화할 수 있습니다. 비활성 상태가 1시간 동안 유지되면 로비는 만료 상태로 간주됩니다. 만료된 로비는 언제든지 삭제될 수 있습니다. 삭제되면 로비는 더 이상 쿼리나 API에서 사용할 수 없습니다. 이 기간은 설정할 수 없습니다. 로비를 업데이트하거나 하트비트를 전송하여 만료된 로비를 다시 활성화할 수 있습니다. 다음 코드 샘플은 코루틴과 로비 생성을 연동하여 주기적으로 새 로비를 하트비트하는 방법을 보여 줍니다. C#
async Task<Lobby> CreateLobbyWithHeartbeatAsync(){ string lobbyName = "test lobby"; int maxPlayers = 4; CreateLobbyOptions options = new CreateLobbyOptions(); // Lobby parameters code goes here... // See 'Creating a Lobby' for example parameters var lobby = await LobbyService.Instance.CreateLobbyAsync(lobbyName, maxPlayers, options); // Heartbeat the lobby every 15 seconds. StartCoroutine(HeartbeatLobbyCoroutine(lobby.Id, 15)); return lobby;}IEnumerator HeartbeatLobbyCoroutine(string lobbyId, float waitTimeSeconds){ var delay = new WaitForSecondsRealtime(waitTimeSeconds); while (true) { LobbyService.Instance.SendHeartbeatPingAsync(lobbyId); yield return delay; }
호스트는 로비가 사용 중일 때는 주기적으로 하트비트해야 하지만, 나중에 사용하지 않을 때는 이러한 로비를 삭제해야 한다는 사실에 유의해야 합니다. 종료 중에 생성된 로비를 반복하면 이 작업을 간단히 수행할 수 있습니다. 다음 코드 샘플은 MonoBehaviorOnApplicationQuit() 함수를 활용해 생성된 로비를 삭제하는 방법을 보여 줍니다. C#
ConcurrentQueue<string> createdLobbyIds = new ConcurrentQueue<string>();void OnApplicationQuit(){ while (createdLobbyIds.TryDequeue(out var lobbyId)) { LobbyService.Instance.DeleteLobbyAsync(lobbyId); }}