Работа с комнатами
В этом разделе вы найдете примеры разработки функциональности работы с комнатами.
Проверка существования комнаты
import {
HttpClientFetchError,
HttpClientResponseError,
JazzSdkGetRoomDetailsError,
} from '@salutejs/jazz-sdk-web';
try {
const conference = await jazzClient.conferences.getDetails({
conferenceId,
password,
});
} catch (error) {
if (error instanceof HttpClientFetchError) {
// Сетевая ошибка, ошибка доступа к интернету
}
if (error instanceof HttpClientResponseError<JazzSdkGetRoomDetailsError>) {
// Серверная ошибка, ответ от сервера с ошибкой
}
}
Подключение к комнате
Перед подключением к конференции нужно инициализировать JazzSdk
и JazzClient
.
Выполение функции join
с заданными параметрами создает экземпляр JazzRoom
. После этого начинается подключения к комнате:
- проверяется существование комнаты;
- выполняется проверка доступов;
- поднимается веб-сокет соединение и вход в комнату.
На каждое событие можно подписаться в момент создания экземпляра JazzRoom
или подписаться на событие добавления комнаты в JazzClient
.
Пример:
import {
createJazzClient,
createJazzWebSdk,
JazzSdk,
JazzClient,
} from '@salutejs/jazz-sdk-web';
const jazzSdk: JazzSdk = await createJazzWebSdk();
const jazzClient: JazzClient = await createJazzClient(jazzSdk, {
serverUrl: 'YOUR_JAZZ_SERVER_ADDRESS',
});
const room = jazzClient.conferences.join({
conferenceId,
password,
});
Обработка ошибок подключения к комнате
Авторизация при подключении к комнате обязательна.
import { AuthorizationRequiredError } from '@salutejs/jazz-sdk-web';
try {
const room = jazzClient.conferences.join({
conferenceId,
password,
});
} catch (error) {
if (error instanceof AuthorizationRequiredError) {
// Доступ запрещен, необходимо авторизоваться
}
}
Ожидание подключения к комнате
try {
await room.ready();
} catch () {
throw new Error('Failed to connect to conference');
}
Метод room.ready()
может принимать ожидаемый статус в качестве аргумента.
Пример ниже делает то же самое, что и предыдущий пример:
try {
await room.ready('connected');
} catch () {
throw new Error('Failed to connect to conference');
}
Ошибки подключения к комнате
Можно обрабатывать следующие ошибки:
Пример обработки:
import { JazzRoomError } from '@salutejs/jazz-sdk-web';
try {
await room.ready();
} catch (error) {
if (error instanceof JazzRoomError) {
// JazzRoomError.reason = ExceededMaxSdkMeetingsError | NetworkError | OpenConnectionError;
}
}
Ошибки во время работы комнаты
При работе комнаты могут возникать следующие ошибки:
NotAllowedError
AccessByPermissionError
KickedError
ExceededMaxSdkMeetingsError
ExceededMaxConferenceCapacityError
ExceededMaxConferenceViewersCapacityError
ExceededMaxConferenceDurationError
NetworkError
OpenConnectionError
UnknownError
Пример обработки:
import { handleEvent } from '@salutejs/jazz-sdk-web';
const unsubscribe = handleEvent(room.event$, 'error', ({ payload }) => {
console.log(payload.error);
});
unsubscribe();
Выход из комнаты
Выполнение функции leave
закрывает веб-сокет соединение и завершает работу запущенных процессов.
await room.leave();