1. Приветствуем Вас на неофициальном форуме технической поддержки XenForo на русском языке. XenForo - коммерческий форумный движок от бывших создателей vBulletin, написанный на PHP.
  2. Уважаемые пользователи!

    Если Вы ищите исполнителя и Вам обещают выполнить работу, но при этом требуют предоплату, будьте осторожны. Администрация не советует связываться с людьми, не имеющими толком на этом форуме сообщений, репутации, портфолио.

    Судя по всему, не каждому данные вещи очевидны, поэтому просто напоминаем - будьте бдительны!

Плагин мессенджера - расширение функционала XenForo

Тема в разделе "Есть работа. Ищу специалиста. Оплату гарантирую", создана пользователем Senior, 08.06.2011.

Загрузка
  1. martini

    martini Местный

    Регистрация:
    10.10.10
    Сообщения:
    249
    Симпатии:
    28
    А как тогда работает тот же тайга-чат? Ето ведь тоже мгновенная доставка сообщений, только не в личку, а всем.
     
  2. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    Тайга - это очень грустное поделие. Насколько помню там вообще тупо идет запрос каждые несколько сек для проверки новых сообщений, а это приложит любой сервер хотя бы при 100 онлайн при условии что у них будут открыты хотя бы 2-3 вкладки с чатом.
    Как я писал выше если речь идет о безглючной работе как в вк или фейсбуке, то там уж очень много js костылей надо писать для различных браузеров чтобы везде работало, а вот серверная реализация наоборот довольно примитивная.
    Для примера есть такая разработка для nodejs названием socket.io - так ее пилит довольно много народа с момента выхода nodejs, но так и не допилили до нормального состояния и все основные проблемы там как раз в клиентском js
    --- добавлено : 18 дек 2014 в 15:42 ---
    Хотя кажется мультиплексирование появилось уже и в других открытых pubsub движках, а значит можно ожидать нормальной реализации.
     
    Последнее редактирование модератором: 26.12.2014
    martini нравится это.
  3. Exile

    Exile Местный

    Регистрация:
    27.06.11
    Сообщения:
    997
    Симпатии:
    545
    Версия XF:
    1.4.4
    В чем глюки заключаются? У себя на форуме на базе phpbb2 еще прикручивал оповещения о получении личного сообщения - при большом числе открытых вкладок единственным замечанием было появление окошек уведомлений во всех открытых вкладках. Но опять же и это реализуется достаточно просто отправкой нового значения в "канал" пользователя, чтобы ранее отправленное окно с id таким-то было закрыто. Могу даже код в принципе выложить, там ничего сверхсложного нет, обычные модальные окна на jquery как фронтенд и все. По сути выглядит 1 в 1 как во вконтакте, да и реализация по большому счету идентичная.
     
  4. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    А в чем проблема использовать XenHabla? В качестве бакэнда используется IRC-сервер, который в принципе поддерживает большой онлайн без особых проблем.
     
  5. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    Банальный лимит браузера на количество открытых соединений на один домен (у каждого браузера свой, но в среднем порядка 8). В результате чего рандомно отваливаются соединения в неактивных вкладках и начинается постоянный реконнект отвалившихся соединений. Для избежания этого должно быть только одно соединение для всех вкладок с коммуникацией между вкладками (именно так сделано во всех платных решениях, вернее оно только одно и во всех крупных социальных сетях).
    --- добавлено : 19 дек 2014 в 13:51 ---
    банально тем что это флеш и это совсем не кроссбраузерно. Но может TC и подойдет
     
    Последнее редактирование модератором: 27.12.2014
  6. Exile

    Exile Местный

    Регистрация:
    27.06.11
    Сообщения:
    997
    Симпатии:
    545
    Версия XF:
    1.4.4
    Возможно актуально было несколько лет назад. Но сейчас у большинства браузеров (Chrome и все на основе (Opera, Yandex и т.д.), FF в бета и скоро в релизе, Safari, да и IE новых версий банальный) каждая вкладка это отдельный процесс, следовательно лимит на число одновременно открытых соединений там тоже отдельный. Не представляю ситуации когда надо держать более 4 лонгполл-соединений одновременно. А вы?
     
  7. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    А вот и нет :) Лимит больше в итоге, но все равно он есть. Именно поэтому все социалки используют 1 расшаренное соединение. По факту там обычно вообще велосипед, в зависимости от того как подключается пользователь через прокси, через мобильный интернет (тоже вариант прокси), с какого браузера и выбирается оптимальный вариант подключения (вебсокеты, флешсокеты, лонгполл, jsonp и т.д.).
    Т.е. если что-то некритичное и на не сильно посещаемом ресурсе, то да лонгпол и realplexor пойдет. Хотя realplexor самый неэффективный вариант - есть значительно более функциональные, более универсальные и более быстрые серверные реализации (на ноде, на nginx-е, на lua и т.д.). Основная проблема со всеми - это клиентский код, который чтобы он был универсальным должен состоять из кучи костылей (и проблема не только в версии браузера, а в типе подключения и в настройках системы)
     
  8. akinak

    akinak Местный

    Регистрация:
    12.02.13
    Сообщения:
    259
    Симпатии:
    243
    Версия XF:
    1.1.3
    Что-то мне сомнительно, что требуется мега универсальное решение, готовое поспорить с социалками.
    Допускаю, что можно сделать "почти" риалтайм, который будет работать на 95% устройств, и не потребует такой сложности и затрат в разработке.
     
  9. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    Все равно куча нюансов, даже при самой простой реализации, т.к. по любому будет использоваться технология отличная от пхп. Или если даже будет использоваться пхп типа Ratchet/ReactPHP, то все равно не все там гладко в плане интеграции
     
  10. infis

    infis Местный

    Регистрация:
    27.06.11
    Сообщения:
    5 966
    Симпатии:
    3 548
    Версия XF:
    1.5.9
    Ну да, есть проблема с флешем иногда. Но вроде как и на javascript должно работать. Там различные клиенты поддерживаются.
     
  11. martini

    martini Местный

    Регистрация:
    10.10.10
    Сообщения:
    249
    Симпатии:
    28
  12. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    Там тупо обновление страницы в фоне каждые несколько секунд. Такой подходит положит даже самый производительный сервер если перепиской одновременно будет пользоваться хотя бы человек 20-30, не говоря уже о сотнях человек
     
    martini нравится это.
  13. slowpoke

    slowpoke Местный

    Регистрация:
    07.10.10
    Сообщения:
    158
    Симпатии:
    81
    Версия XF:
    1.1.1
    Тоже раньше долго думал, как поступить с реализацией, в итоге остановился на: http://www.rabbitmq.com/ ну и node.js с socket.io, не всё гладко, проблему с одновременными соединениями я даже не решал и не заморачивался, но без всяких проблем это дело работает на всех браузерах, на которых тестил: IE >= 8, Chrome, Safari, FF, Opera, мобильные хром, сафари, фф.
    Могу код на гит выложить без использования рэббита, если кому-то интересно.
     
  14. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    Таких реализаций в стиле "сделать реалтайм чат на nodejs за 10 минут" в инете уйма :) Основная проблема, что форум - это не одностраничный сайт-приложение, которое будут редко запускать в нескольких окнах/вкладках. Форум запускают в несколких вкладках почти всегда и если взять живые переписки, то очень большая вероятность что откроют несколько переписок с разными людьми одновременно.

    Ну да, лонгполл без проблем работает на всех браузерах и даже на ie6 :) Но как я говорил выше в связке с форумом и при более менее нормальной посещалке это будет глючить неимоверно. И если бы глючил только чат, то не было бы проблем, так из-за него периодически не будут полностью прогружаться обычные страницы (картинки/css/скрипты) из-за того же лимита соединений на домен. Для обхода этого иногда используют wildcard поддомены для сокет/логполл соединений, но это все-таки грязный хак.
     
  15. slowpoke

    slowpoke Местный

    Регистрация:
    07.10.10
    Сообщения:
    158
    Симпатии:
    81
    Версия XF:
    1.1.1
    Ну у меня не одностраничное-приложение, это немного в TODO листе, на данный момент полноценный мессенджер с групповыми чатами внутри проекта, сам проект на симфони и ещё никто не жаловался, что при открытии в куче вкладок были какие-то проблемы и про ограничения на кол-во соединений для домена, возможно посещаемость не та, хотя думаю при 150к визитах в сутки это бы рано или поздно выявилось.

    UPD: угу, поглядел в код, в целом от кол-ва соединений это никак не спасёт, ну да ладно, как станет этот момент критичным, начну думать в эту сторону.
    Предыдущая версия чата с хранением постов в mongo. В целом код сейчас идентичен, только запросы к mongo заменены на rabbit'овские.
    Код: http://pastebin.com/05xq1g65

    Ну и я придерживаюсь той версии, что тут ничего не предпринять, если пользователь открыл кучу вкладок, то сам виноват или просто убивать соединения на неактивных вкладках.
     
    Последнее редактирование: 04.01.2015
  16. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    Не, ну как раз для одностраничного приложения это прокатит - нафиг надо чтобы открывал в нескольких вкладках. Но если говорить о мессенджере, то могут быть открыты несколько разных переписок одновременно и вот тут начинаются проблемы - самое простое и быстрое в плане реализации (но очень костыльное) - это соединение на wildcard поддомены, но это увеличивает время соединения с сокетсервером на время днс запроса.

    P.S. чисто для лонгполл/вебсокетс мне больше Faye нравится более приятный апи чем у сокет.ио и большую нагрузку тянет.
     
  17. slowpoke

    slowpoke Местный

    Регистрация:
    07.10.10
    Сообщения:
    158
    Симпатии:
    81
    Версия XF:
    1.1.1
    Почитал про Faye, поэкспериментирую на днях, довольно интересно выглядит, но тут думаю в моей ситуации это кардинально ситуацию не изменит + у faye баг постоянной подгрузки на странице, что не принципиально, но не приятно.
     
  18. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    но тут как настроить транспорты - если сделать вебсокеты по умолчанию, а фолбек лонгполлом то у всех новых браузеров будет работать без этого фичебага
    С другой стороны последний сокет.ио тоже неплох, хотя может и оверхед по функционалу (с другой стороны фича сначала подключаться по лонгполлу, который работает у всех а потом пробует другие типы соединения, в результате задержка при подключении значительно сокращается).
    Без оверехеда прикладного уровня, типа аналог чистых вебсокетов, с унифицированным api похожим на вебсокеты - socksjs
     
  19. slowpoke

    slowpoke Местный

    Регистрация:
    07.10.10
    Сообщения:
    158
    Симпатии:
    81
    Версия XF:
    1.1.1
    Ну тут всё сводится к одному принципу реализации, интересно как реализовано у вк, но мне кажется они особо не заморачивались с преодолением лимита на HTTP-соединения.
     
  20. Yoskaldyr

    Yoskaldyr Пользователь

    Регистрация:
    27.09.10
    Сообщения:
    1 921
    Симпатии:
    1 163
    Версия XF:
    1.0.4
    VK как раз классика как должно быть реализовано - одно соединение на все вкладки окна и куча костылей под все браузеры, но клиентский код запакован и чтобы его заиспользовать нужны знания js значительно выше среднего и проблемы не в коде как таковом, а в том чтобы понять что делает конкретный костыль. Кстати первые версии это js-а от vk даже были в паблике, недолго правда и значительно уступали по функционалу тому же socket.io. Самый рабочий вариант в плане кроссбраузерности и безглючности это Lightstreamer, но у него тоже весь клиентский код запакован распакованная версия только при покупке (стоит дофига и больше) а в запакованном коде копаться приятного мало - переменные/функции/методы - все типа a,b,c,d и т.д. Т.е. разобраться то можно, но времени придется потратить дофига и больше.
     

Поделиться этой страницей