Cómo unirse a una sesión — Windows

Utilizando un ID de sesión y ficha, puedes conectarte a la sesión de OpenTok utilizando el SDK de OpenTok para Windows.

Este tema incluye las siguientes secciones:

Para obtener información sobre cómo crear un identificador de sesión y un token de autenticación, consulta Creación de sesiones y Creación de fichas.

Inicialización de un objeto «Session»

Antes de poder conectarte a una sesión, debes crear una instancia del objeto Session llamando a la función Session() constructor, pasando el contexto de aplicación de Windows adecuado, tu clave API de OpenTok y un ID de sesión de OpenTok:

session = new Session(Context.Instance, API_KEY, SESSION_ID);

Ten en cuenta que al llamar a la función Session() El constructor no crear una sesión de OpenTok; crea un objeto «Session» de C#, que representa una sesión de OpenTok ya existente. Para crear una sesión de OpenTok, hay que utilizar las bibliotecas de OpenTok del lado del servidor. Véase Creación de una sesión de OpenTok.

Querrás añadir manejadores para los eventos básicos relacionados con la sesión:

session.Connected += Session_Connected;
session.Disconnected += Session_Disconnected;
session.Error += Session_Error;
session.ConnectionCreated += Session_ConnectionCreated;
session.StreamReceived += Session_StreamReceived;
session.StreamDropped += Session_StreamDropped;

Te interesará implementar cada uno de los métodos de devolución de llamada. Por ejemplo, este método gestiona ConnectionCreated evento (que se produce cuando el cliente se conecta a la sesión de OpenTok):

private void Session_Connected(object sender, EventArgs e)
{
    Console.WriteLine("Session connected connection id:" + session.Connection.Id);
}

Nota: La clase `Session` implementa la interfaz `System.IDisposable`. Asegúrate de llamar a la Dispose() del objeto Session para liberar sus recursos cuando ya no necesites el objeto (por ejemplo, cuando se cierra la aplicación o la ventana).

Conectarse a una sesión

Llame al Session.connect(token) pasando un token OpenTok válido:

session.Connect(TOKEN);

El Session.Connected El evento se envía cuando el cliente se conecta a la sesión de OpenTok.

session.ConnectionCreated += Session_ConnectionCreated;

private void Session_Connected(object sender, EventArgs e)
{
    Console.WriteLine("Session connected connection id:" + session.Connection.Id);
}

El Session.Error se envía cuando se produce un error en la conexión:

session.Error += Session_Error;

private void Session_Error(object sender, Session.ErrorEventArgs e)
{
    Console.WriteLine("Session error:" + e.ErrorCode);
}

Consulta la documentación de la enumeración OpenTok.ErrorCode para ver las descripciones de los valores de la code propiedad del objeto de error.

Desconectarse de una sesión

Para desconectarte de una sesión, llama al Session.Disconnect() método:

session.Disconnect();

Detectar cuándo te has desconectado

El Session.Disconnected El mensaje se envía cuando el cliente se desconecta de la sesión de OpenTok.

private void Session_Disconnected(object sender, EventArgs e)
{
    Console.WriteLine("Session disconnected");
}

Si la conexión a la sesión se interrumpe debido a un error que se produce tras una conexión correcta, el Session.Error El evento se envía antes del Session.Disconnected evento. El objeto ErrorEventArgs que se pasa al Session.Error define la razón por la que se ha caído la conexión.

Reconexión automática

Los clientes intentarán volver a conectarse automáticamente a una sesión de la que se hayan desconectado de forma inesperada (por ejemplo, debido a una interrupción de la conexión de red). No es necesario añadir ningún código para que los clientes se vuelvan a conectar automáticamente, a menos que quieras responder a los eventos que se producen cuando un cliente se desconecta y vuelve a conectarse.

Cuando se interrumpe la conexión y el cliente intenta volver a conectarse, la función Session.ReconnectionStart se envía el evento. Cuando se restablece la conexión, el Session.ReconnectionSuccess se envía el evento. Si el cliente no puede restablecer la conexión, se desconecta de la sesión de OpenTok, y el Session.Disconnected se envía el evento.

En respuesta a estos sucesos, tu aplicación puede (opcionalmente) mostrar notificaciones en la interfaz de usuario que indiquen los estados de desconexión temporal, reconexión y desconexión:

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.
}

Cuando el cliente se desconecta temporalmente de una sesión, los objetos Subscriber de los clientes suscritos al flujo envían Subscriber.StreamDisconnected y Subscriber.StreamDisconnected cuando su flujo publicado cae y cuando (y si) se reanuda automáticamente. Para más información, consulte la sección reconexión automática sección de la guía para desarrolladores titulada «Suscribirse a flujos».

Por defecto, cualquier señal que envíe mientras su cliente está temporalmente desconectado de una sesión se pone en cola y se envía cuando (y si) se reconecta con éxito. Puede utilizar la función Session.SendSignal(type, signal, connection, retryAfterReconnect) y establecer el método retryAfterReconnect parámetro a false para evitar que las señales se pongan en cola mientras usted está desconectado. Para más información, consulte Evitar que se envíen señales durante la reconexión automática.

Detección de la conexión y desconexión de otros clientes

Cuando esté conectado a una sesión, el Session.ConnectionCreated El evento se envía cuando un nuevo cliente (que no sea el tuyo) se conecta a la sesión. El objeto `ConnectionEventArgs` que se pasa al detector de eventos define la conexión que se ha incorporado a la sesión:

session.ConnectionCreated += Session_ConnectionCreated;

private void Session_ConnectionCreated(object sender, EventArgs e)
{
    // Another client connected to the session.
}

El Session.ConnectionDropped Este evento se activa cuando un cliente (que no sea el propio) abandona la sesión. El objeto `ConnectionEventArgs` que se pasa al detector de eventos define la conexión que ha abandonado la sesión.

session.ConnectionCreated += Session_ConnectionDropped;

private void Session_ConnectionDropped(object sender, EventArgs e)
{
    // Another client disconnected from the session.
}