Gerenciamento de sessão do Remote Rendering
O Azure Remote Rendering fornece a API REST de gerenciamento de sessão para gerenciar interações com o servidor de nuvem e consultar informações sobre sessões do Remote Rendering. Em C# e C++, você pode criar, atualizar e parar sessões por meio das classes RemoteRenderingClient
e RenderingSession
. Esta unidade descreve como gerenciar sessões do Remote Rendering.
Criar uma sessão
O comando a seguir solicita a criação de uma sessão.
Invoke-WebRequest -Uri "$endPoint/v1/accounts/$accountId/sessions/create" -Method Post -ContentType "application/json" -Body "{ 'maxLeaseTime': '4:0:0', 'models': [], 'size': 'standard' }" -Headers @{ Authorization = "Bearer $token" }
Ao criar uma sessão, você pode usar o parâmetro maxLeaseTime
para especificar um tempo máximo de concessão, normalmente no intervalo de uma a oito horas. O tempo máximo de concessão é a duração durante a qual o host aceita entrada. Se necessário, você pode estender o tempo de concessão de uma sessão ativa.
A resposta da solicitação retorna um sessionId
, que permite consultar informações sobre a sessão. Este UUID e algumas informações básicas sobre a sessão persistem por 30 dias, para que você possa consultar essas informações mesmo depois que a sessão for interrompida.
Conectar-se a um servidor
Quando uma sessão estiver pronta, um dispositivo cliente poderá se conectar a ela e poderá enviar comandos para carregar e modificar modelos. Quando RenderingSession.IsConnected
é true
, RenderingSession.Connection
retorna uma instância de RenderingConnection
, que contém as funções para carregar modelos, manipular entidades e consultar informações sobre a cena renderizada.
Você pode criar, observar e desligar quantas sessões desejar de um determinado aplicativo, mas apenas um dispositivo pode se conectar a uma sessão do Remote Rendering por vez. As tentativas de se conectar à sessão por outros dispositivos falham. Outro dispositivo só pode se conectar depois que a sessão for interrompida.
Já que cada host do Azure Remote Rendering só atende a um dispositivo cliente por vez, o cliente conectado a uma sessão tem controle exclusivo sobre o conteúdo renderizado. A conexão de cliente único também significa que o desempenho de renderização nunca varia por motivos fora do seu controle.
Parar uma sessão
A sessão é interrompida quando o tempo máximo de concessão expira ou você interrompe a sessão manualmente. Para interromper manualmente uma sessão, você pode chamar RenderingSession.StopAsync
. A sessão também pode ser interrompida devido a alguma falha. Depois que a sessão for interrompida, você não será mais cobrado e todos os estados anteriores, como modelos carregados, serão descartados.
Depois que uma sessão for interrompida, você poderá consultar a ID de sessão persistente usando RenderingSession.SessionUuid()
. Um aplicativo pode chamar RemoteRenderingClient.OpenRenderingSessionAsync
com a ID da sessão para associar a essa sessão e armazená-la em cache localmente.