ФорумПрограммированиеПыхнуть хотите?Готовые решения → DuelJS - решение по работе с вкладками в стиле Master/Slave

DuelJS - решение по работе с вкладками в стиле Master/Slave

  • Ivan.

    Сообщения: 494 Репутация: N Группа: Адекваты

    Spritz 6 января 2015 г. 16:27

    Писал сначала для себя, потом обратил внимание что подобных решений почему-то весьма маловато в интернете.
    Полный обзор возможностей:
    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
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 6 января 2015 г. 17:26, спустя 59 минут 2 секунды

    Лайкнул, может заюзаю

    Спустя 13 сек.

    Спасибо!

    adw/0
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 6 января 2015 г. 21:35, спустя 4 часа 9 минут 33 секунды

    охуенно когда мои идеи реализуют другие люди, и я не трачу на эту хуйню время. может еще идей накидать?))))

    Сапожник без сапог
  • Ivan.

    Сообщения: 494 Репутация: N Группа: Адекваты

    Spritz 7 января 2015 г. 5:36, спустя 8 часов 21 секунду

    Накидай лучше идей как заработать миллион долларов
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 7 января 2015 г. 8:07, спустя 2 часа 31 минуту 29 секунд

    первый миллион никогда не "зарабатывается")
    все умрут, а я изумруд
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 7 января 2015 г. 8:57, спустя 49 минут 30 секунд

    первый миллион никогда не "зарабатывается")

    @md5, ну да, это только к пенсии в лучшем случае)

    Сапожник без сапог
  • ivanscm

    Сообщения: 1251 Репутация: N Группа: Джедаи

    Spritz 8 января 2015 г. 6:52, спустя 21 час 54 минуты 54 секунды

    ахуенно
    С возвращением, Пiха!
  • kostyl

    Сообщения: 5203 Репутация: N Группа: Джедаи

    Spritz 8 января 2015 г. 7:44, спустя 51 минуту 58 секунд

    @ivanscm, отдай долги
  • phpdude

    Сообщения: 26624 Репутация: N Группа: в ухо

    Spritz 8 января 2015 г. 9:25, спустя 1 час 40 минут 57 секунд

    @ivanscm, отдай долги

    @kostyl, все верно сказал

    Сапожник без сапог
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 8 января 2015 г. 16:21, спустя 6 часов 56 минут 57 секунд

    Зачем рекурсивно копировать протитип, если там одни методы?
  • Ivan.

    Сообщения: 494 Репутация: N Группа: Адекваты

    Spritz 8 января 2015 г. 19:28, спустя 3 часа 6 минут 14 секунд

    @vasa_c, Если ты про функцию копирования, то она тупо скопипащена с другой либы (с underscore вроде). Это не критично, легко исправить. Сильно большой оптимизации это не добавит.
  • Ivan.

    Сообщения: 494 Репутация: N Группа: Адекваты

    Spritz 11 января 2015 г. 19:51, спустя 3 дня 23 минуты

    Залил онлайн-демо вот сюда: http://dueljs.studentivan.ru/bower_components/duel/public/
    Еще выпустил версию 1.1.0 с поддержкой storage event
    Когда я делал предыдущую версию, браузеры очень трудно поддерживали storage event, разве что ночные сборки хрома более менее на него нормально реагировали. Сейчас ситуация изменилась в корне. Почти все браузеры держат его нормально, кроме IE. Включил его везде кроме IE соответственно.
  • ivanscm

    Сообщения: 1251 Репутация: N Группа: Джедаи

    Spritz 12 января 2015 г. 5:36, спустя 9 часов 44 минуты 58 секунд

    > **@ivanscm**, отдай долги
    >

    **@kostyl**, все верно сказал

    @phpdude, какие долги )
    С возвращением, Пiха!
  • kostyl

    Сообщения: 5203 Репутация: N Группа: Джедаи

    Spritz 12 января 2015 г. 17:45, спустя 12 часов 9 минут 16 секунд

  • Ivan.

    Сообщения: 494 Репутация: N Группа: Адекваты

    Spritz 15 января 2015 г. 19:45, спустя 3 дня 1 час 59 минут

    Допилил версию 1.2.0, покрыл тестами, добавил документацию http://dueljs.readthedocs.org/
    Взял идеи трех новых методов у конкурентов: once (одноразовый on), off и emit (alias для broadcast)

Пожалуйста, авторизуйтесь, чтобы написать комментарий!