Полный обзор возможностей:
var channel = duel.channel('example'); // входим в канал с именем example
После этого доступен стандартный объект window, расширенный новой функцией
window.isMaster() // true если текущая вкладка является "мастером", т.е. в ней ведется работа в данный момент
Дополнительно мы можем запросить уникальный идентификатор текущей вкладки
duel.getWindowID() // вернет большое уникальное число
Как этим пользоваться? Экономим запросы на сервер в приложениях с подобными запросами:
if (window.isMaster()) {
updateChatWindow(); // user function
}
У объекта channel есть полезная функция оповещения всех "в этом канале"
channel.broadcast('название_события', переменные…)
Обрабатывается следующим образом:
channel.on('название_события', function (переменные…) { … });
Для чего это может быть использовано?
Допустим вы получаете сообщение для пользователя на вкладке master, но на остальных вкладках получение сообщений с сервера заблокирован. При этом при смене вкладки пользователь должен видеть историю сообщений, словно это была та же самая вкладка, в которой он работал до этого. Вы получаете сообщение на вкладке Master и "оповещаете" все остальные вкладки что "новое сообщение пришло".
https://github.com/studentIvan/dueljs