private async Task <RoomDto> TryJoinOpenedRoomAsync() { var roomList = await client.GetOpenedRoomsAsync(playerId).ConfigureAwait(false); logger.Info($"Найдено {roomList.Rooms.Length} открытых комнат"); var openedRoom = roomList.Rooms.FirstOrDefault(); if (openedRoom != default) { logger.Info($"Пытаюсь подключиться к комнате {openedRoom.Id}"); var joinRequest = new JoinRoomRequestDto { PlayerName = playerName }; var joinResult = await client.JoinRoomAsync(joinRequest, openedRoom.Id, playerId).ConfigureAwait(false); if (joinResult.Success) { var room = await client.GetRoomAsync(openedRoom.Id, playerId).ConfigureAwait(false); logger.Info($"Удалось подключиться к комнате {room.Id}, имя соперника {room.Players.First(x => x.Id != playerId).Name}"); return(room); } } return(default);
public async Task <IActionResult> JoinRoom([FromBody] JoinRoomRequestDto req) { // join a room await _room.Groups.AddToGroupAsync(req.ConnectionId, req.RoomName); return(Ok()); }
public async Task <JoinRoomResponseDto> JoinRoomAsync(JoinRoomRequestDto parameters, Guid roomId, Guid playerId) { var content = new StringContent(JsonConvert.SerializeObject(parameters), Encoding.UTF8, "application/json"); var response = await httpClient.PostAsync($"/v2/rooms/{roomId}/join?playerId={playerId}", content).ConfigureAwait(false); var json = await response.Content.ReadAsStringAsync().ConfigureAwait(false); logger.Info($"{nameof(JoinRoomAsync)}:Response:{json}"); return(JsonConvert.DeserializeObject <JoinRoomResponseDto>(json)); }
public Task <JoinRoomResponseDto> JoinRoomAsync(JoinRoomRequestDto parameters, Guid roomId, Guid playerId) => RetryAsync(x => client.JoinRoomAsync(x.parameters, x.roomId, x.playerId), (parameters, roomId, playerId));