...
Обратите внимание, что аудио потоки проигрываются в отдельных элементах
Исходный код примера
Для работы с исходным кодом примера возьмем версию, доступную здесь, которую также можно загрузить в сборке 1.0.1.36
Исходный код разбит на следующие модули:
- two-way-streaming.html - HTML страница
- two-way-streaming.css - стили HTML страницы
- two-way-streaming.js - основная логика приложения
- config.json - файл конфигурации клиента, содержит описание публикуемых потоков
Анализ исходного кода
1. Локальные переменные
...
Code Block | ||||
---|---|---|---|---|
| ||||
const CurrentState = function(prefix) { let state = { prefix: prefix, pc: null, session: null, room: null, set: function(pc, session, room) { state.pc = pc; state.session = session; state.room = room; }, clear: function() { state.room = null; state.session = null; state.pc = null; }, buttonId: function() { return state.prefix + "Btn"; }, buttonText: function() { return (state.prefix.charAt(0).toUpperCase() + state.prefix.slice(1)); }, inputId: function() { return state.prefix + "Name"; }, statusId: function() { return state.prefix + "Status"; }, formId: function() { return state.prefix + "Form"; }, errInfoId: function() { return state.prefix + "ErrorInfo"; }, is: function(value) { return (prefix === value); } }; return state; } |
4. Инициализация
init() code
Функция init() вызывается после того, как страница загрузится:
- инициализирует объекты состояния
- загружает config.json или конфигурацию по умолчанию
- инициализирует поля ввода
Code Block | ||||
---|---|---|---|---|
| ||||
const init = function() { let configName = getUrlParam("config") || "./config.json"; ... publishState = CurrentState(PUBLISH); playState = CurrentState(PLAY); $.getJSON(configName, function(cfg){ mainConfig = cfg; onDisconnected(publishState); onDisconnected(playState); }).fail(function(e){ //use default config console.error("Error reading configuration file " + configName + ": " + e.status + " " + e.statusText) console.log("Default config will be used"); mainConfig = defaultConfig; onDisconnected(publishState); onDisconnected(playState); }); $("#url").val(setURL()); $("#roomName").val("ROOM1-"+createUUID(4)); $("#publishName").val("Publisher1-"+createUUID(4)); $("#playName").val("Player1-"+createUUID(4)); } |
...
12. Действия по нажатию кнопки Stop
onStopClick(), Session.dosconnectdisconnect() code
Функция onStopClick():
...