На следующей неделе выйдет обновление модуля Push & Pull 12.5.5 которое потребует от вас исключения нескольких правил из настроек nginx.
[spoiler]
Что изменилось:
удалено значение push_stream_max_subscribers_per_channel 50; для корректной работы с общим каналом
изменено значение push_stream_shared_memory_size теперь оно 256M - при маленьком кол-во памяти сервер перестает корректно реагировать на входящие сообщения.
изменено значение push_stream_max_messages_stored_per_channel теперь оно 1000 (можно указать 500)
Мы существенно упростили работу модуля, теперь он работает без дополнительного проксирования, без отдельного локейшена для cp1251 и в нем появилась поддержка веб-сокетов, для наилучших результатов синхронизируйте ваш конфиг с тем что указан в этой статье
Этот конфиг скоро появится в новой виртуальной машине 4.3.
Быстрых вам сообщений!
Мы очень зависим от браузера, при реализации данной технологии в продукт, мы долго обсуждали стоит или нет выступать пионерами и пробовать еще не до конца отлаженную в браузерах функцию, тесты показали что очень большое кол-во пользователей хрома, могут подключится на прямую (даже с простыми НАТами), меньшая часть подключается через наши сервера (например пользователи МегаФона). Мы делаем все возможное от нас, что бы максимально улучшить сервис.
Как вы знаете, у нас есть проект Битрикс24, который позволяет нам статистически наблюдать работает или нет какая нибудь фича, по нашим наблюдениям проблемы возникают у небольшого кол-во пользователей, в основном эти проблемы возникают из-за сложной топологии сети, с закрытыми портами и сложными НАТами и из-за использования разных версии Chrome.
В данный момент технология является очень экспериментальной и молодой, о чем гласит дисклаймер под видео-звонком, почти каждый релиз браузера (новой версии) делает звоники между ними не совместимыми.
Например так было между браузерами 25 и 26 версии и частично 27 и 28, при подключении одинаковых версий было все хорошо, при подключении разных пропадал звук. По этой же причине, пока мы не включаем поддержку FireFox, он не поддерживает обход НАТа, как только они это доделают мы включим и его.
В вашем тиките номер 392616, сегодня специалист ответит по поводу портов.
Спасибо за участие.
Вкратце для тех, кто тоже столкнулся с аналогичной проблемой: не хватало заголовков CORS, которые либо ставятся модулем nginx_push_stream_module при указании директивы push_stream_allowed_origins в location'е /bitrix/sub/ 8895-го порта, либо ручным указанием заголовков
Ну и входящие порты 8893/8894 надо открыть в файрволе.
В документации и курсах, а также в конфигах виртуальных машин, в т.ч. образов в Amazone, нет ни слова про это. В Amazon'овской виртуалке вообще порты закрыты и звонки не работают.
Сейчас готовится BitrixVM4.3 с её выходом синхронизируем образы амазон
В данный момент вебсокеты проходят внутреннее тестирование, но когда выйдут сообщения приходить будут через них, т.е. мы будем использовать только в одну сторону, в строну получения.
При лонг пуллинге - мы подключаемся к серверу и ждем 40 секунд ответ, если ответа нет переподключаемся и так бесконечное кол-во раз.
Если использовать веб-сокеты подключение устанавливается только один раз, при открытии страницы.
Профит:
1. уменьшаем время ответа сервера для пользователя, т.к. во время переподключения могут прийти сообщения.
2. экономи трафик сервера за передаче заголовков и отсутствия запроса OPTIONS
Такое реализовано например на фейсбуке и вконтакте, там нет перезагрузки страницы, там меняются части контента, меняется через historyApi адресная строка, благодаря этому музыка играет без "швов" и переключаться вебсокетам не требуется.
Я просто не слежу за технологиями, но вот поддержка вебсокетов есть например, думал, может браузеры поддерживают какую-нибудь фичу, типа заделэить коннект по вебсокетам на время рефреша и потом снова его подхватить, без необходимости открытия. Типа хранения уже созданного объекта в каком-то аналоге LS