Participando de uma sessão — Windows
Usando um ID da sessão e token, você pode se conectar à sessão do OpenTok usando o SDK do OpenTok para Windows.
Este tópico inclui as seguintes seções:
- Inicializando um objeto Session
- Conectando-se a uma sessão
- Desconectando-se de uma sessão
- Como detectar quando você se desconectou de uma sessão
- Reconexão automática
- Detectar quando outros clientes se conectaram e se desconectaram
Para obter informações sobre como criar um ID de sessão e um token de autenticação, consulte Criação de sessão e Criação de tokens.
Inicializando um objeto Session
Antes de se conectar a uma sessão, instancie um objeto Session chamando o método Session() construtor, passando o contexto de aplicativo do Windows apropriado, sua chave da API do OpenTok e um ID de sessão do OpenTok:
session = new Session(Context.Instance, API_KEY, SESSION_ID);
Observe que chamar o Session() o construtor não criar uma sessão do OpenTok; ela cria um objeto Session em C#, que representa uma sessão existente do OpenTok. Você cria uma sessão do OpenTok usando as bibliotecas do OpenTok do lado do servidor. Consulte Criação de uma sessão do OpenTok.
É recomendável adicionar manipuladores para eventos básicos relacionados à sessão:
session.Connected += Session_Connected;
session.Disconnected += Session_Disconnected;
session.Error += Session_Error;
session.ConnectionCreated += Session_ConnectionCreated;
session.StreamReceived += Session_StreamReceived;
session.StreamDropped += Session_StreamDropped;
É recomendável implementar cada um dos métodos de retorno de chamada. Por exemplo, este método lida com ConnectionCreated evento (que ocorre quando o cliente se conecta à sessão do OpenTok):
private void Session_Connected(object sender, EventArgs e)
{
Console.WriteLine("Session connected connection id:" + session.Connection.Id);
}
Observação: A classe Session implementa a interface System.IDisposable. Certifique-se de chamar o Dispose() método do objeto Session para liberar seus recursos quando o objeto não for mais necessário (por exemplo, ao fechar o aplicativo ou a janela).
Conectando-se a uma sessão
Ligue para o Session.connect(token) método, passando um token válido do OpenTok:
session.Connect(TOKEN);
O Session.Connected O evento é enviado quando o cliente se conecta à sessão do OpenTok.
session.ConnectionCreated += Session_ConnectionCreated;
private void Session_Connected(object sender, EventArgs e)
{
Console.WriteLine("Session connected connection id:" + session.Connection.Id);
}
O Session.Error O evento é enviado quando ocorre um erro na conexão:
session.Error += Session_Error;
private void Session_Error(object sender, Session.ErrorEventArgs e)
{
Console.WriteLine("Session error:" + e.ErrorCode);
}
Consulte a documentação da enumeração OpenTok.ErrorCode para obter descrições dos valores da code propriedade do objeto de erro.
Desconectando-se de uma sessão
Para se desconectar de uma sessão, ligue para o Session.Disconnect() método:
session.Disconnect();
Detectar quando a conexão foi interrompida
O Session.Disconnected A mensagem é enviada quando o cliente se desconecta da sessão do OpenTok.
private void Session_Disconnected(object sender, EventArgs e)
{
Console.WriteLine("Session disconnected");
}
Se a conexão com a sessão for interrompida devido a um erro que ocorra após uma conexão bem-sucedida, o Session.Error o evento é enviado antes do Session.Disconnected evento. O objeto ErrorEventArgs passado para o Session.Error O manipulador de eventos define o motivo pelo qual a conexão foi interrompida.
Reconexão automática
Os clientes tentarão se reconectar automaticamente a uma sessão da qual tenham se desconectado inesperadamente (por exemplo, devido a uma queda na conectividade de rede). Você não precisa adicionar nenhum código para que os clientes se reconectem automaticamente, a menos que queira responder a eventos que ocorram quando o cliente se desconectar e se reconectar.
Quando a conexão é interrompida e o cliente tenta se reconectar, o Session.ReconnectionStart evento é enviado. Quando a conexão é restabelecida, o Session.ReconnectionSuccess o evento é enviado. Se o cliente não conseguir restabelecer a conexão, ele se desconecta da sessão do OpenTok, e o Session.Disconnected o evento é enviado.
Em resposta a esses eventos, seu aplicativo pode (opcionalmente) exibir notificações na interface do usuário indicando os estados de desconexão temporária, reconexão e desconexão:
session.ReconnectionStart = Session_ReconnectionStart;
session.ReconnectionSuccess = Session_ReconnectionSuccess;
session.Disconnected = Session_Disconnected;
private void Session_ReconnectionStart(object sender, EventArgs e)
{
// Display a user interface notification.
}
private void Session_ReconnectionSuccess(object sender, EventArgs e)
{
// Adjust user interface.
}
private void Session_Disconnected(object sender, EventArgs e)
{
// Adjust user interface.
}
Quando seu cliente se desconecta temporariamente de uma sessão, os objetos `Subscriber` nos clientes inscritos no fluxo enviam Subscriber.StreamDisconnected e Subscriber.StreamDisconnected eventos que ocorrem quando sua transmissão publicada é interrompida e quando (e se) ela é retomada automaticamente. Para obter mais informações, consulte o reconexão automática seção do guia do desenvolvedor intitulada “Inscrição em streams”.
Por padrão, quaisquer sinais que você enviar enquanto seu cliente estiver temporariamente desconectado de uma sessão são colocados em fila e enviados quando (e se) você se reconectar com sucesso. Você pode usar o Session.SendSignal(type, signal, connection, retryAfterReconnect) método e definir o retryAfterReconnect parâmetro para false para evitar que os sinais fiquem em fila enquanto você estiver desconectado. Para obter mais informações, consulte Impedir que sinais sejam enviados durante a reconexão automática.
Detectar quando outros clientes se conectaram e se desconectaram
Quando você estiver conectado a uma sessão, o Session.ConnectionCreated O evento é disparado quando um novo cliente (que não seja o seu) se conecta à sessão. O objeto ConnectionEventArgs passado ao ouvinte do evento define a conexão que saiu da sessão:
session.ConnectionCreated += Session_ConnectionCreated;
private void Session_ConnectionCreated(object sender, EventArgs e)
{
// Another client connected to the session.
}
O Session.ConnectionDropped O evento é disparado quando um cliente (que não seja o seu) sai da sessão. O objeto ConnectionEventArgs passado ao ouvinte do evento define a conexão que saiu da sessão.
session.ConnectionCreated += Session_ConnectionDropped;
private void Session_ConnectionDropped(object sender, EventArgs e)
{
// Another client disconnected from the session.
}