Сообщения в режиме реального времени

Тема в разделе "Perl, Python, Ruby", создана пользователем magarych, 23 окт 2013.

  1. magarych

    magarych Постоялец

    Регистр.:
    21 июн 2013
    Сообщения:
    134
    Симпатии:
    64
    Собственно задача сделать так, чтобы при написании сообщений другим пользователям, либо при публикации комментария к посту, новое сообщение появлялось без перезагрузки страницы.
    В каком направлении необходимо копать. Я так понимаю сокеты + сигналы. Возможно ajax на jquery и что-то еще.
    Можете мне что-нибудь посоветовать?
     
  2. tarantula

    tarantula Писатель

    Регистр.:
    6 окт 2013
    Сообщения:
    7
    Симпатии:
    3
    Копай веб-сокеты. Вообще эта фигня на NodeJS пишеться за пару часов. Если будешь делать на ajax то приготовься что при большом количестве соединений все будет тормозить.
     
  3. magarych

    magarych Постоялец

    Регистр.:
    21 июн 2013
    Сообщения:
    134
    Симпатии:
    64
  4. tarantula

    tarantula Писатель

    Регистр.:
    6 окт 2013
    Сообщения:
    7
    Симпатии:
    3
    Да все верно, но я бы не рекомендовал питон, все равно там все это через жопу, плюс нет никаких механизмов авторизации и аутентефикации, придеться все это писать самому как и полинг курсоры для хранилища (хотя можешь взять редис там pub/sub из коробки). Попробуй ноду или фреймворк над ней, там все это в разы проще. Если нужен пример на питоне можешь глянуть например https://github.com/songkiller/pytaba но вместо socket.io лучше использовать socket.js так как более стабильный и гибкий.
     
  5. magarych

    magarych Постоялец

    Регистр.:
    21 июн 2013
    Сообщения:
    134
    Симпатии:
    64
    Что вы можете посоветовать в связи с ограничением в 2 соединения? Слышал есть возможность подключения дополнительного канала на Server-Sent Events для получения сообщений с сервера.
     
  6. tarantula

    tarantula Писатель

    Регистр.:
    6 окт 2013
    Сообщения:
    7
    Симпатии:
    3
    Ты имеешь в виду на одного клиента? А зачем больше? Одного вполне достаточно канал-то бидиректный с поддержкой состояния. Просто подумай сам вот откроешь ты например с клиента больше одного, так как клиент сайд у тебя асинхронный жабаскрипт, то это может привести ко всяким неприятным ситуациям типо race condition и прочей инконсистентности.
     
    magarych нравится это.
  7. yaski

    yaski

    Регистр.:
    21 фев 2010
    Сообщения:
    483
    Симпатии:
    288
  8. RORC

    RORC

    Регистр.:
    14 июн 2013
    Сообщения:
    171
    Симпатии:
    41
    Если сообщение не должно появляться мгновенно, то достаточно обычного jquery проверяющего логическое значение через определенное время.
    Если оно изменилось, то подтянуть измененные данные.

    Необходимые переменные:
    Время добавления комментария (База данных)
    Количество комментариев (js хранится локально у посетителя, у каждого свое)
    Логическое значение изменилась ли количество комментариев (строка, если значение больше чем сохраненное локально, то подгрузить недостающие)

    Проблемы с удалением и изменением вполне решаемы, но тут нужно отталкиваться от частных задач.

    Сокеты больше для живого общения с постоянным коннектом. Тут он может быть и не нужен.
     
  9. cooli0

    cooli0 Создатель

    Заблокирован
    Регистр.:
    27 янв 2014
    Сообщения:
    12
    Симпатии:
    2
  10. 3loikot

    3loikot Писатель

    Регистр.:
    19 мар 2014
    Сообщения:
    9
    Симпатии:
    0
    Ну все зависит от задачи, и от "реальности" времени, если аля чатик в вк, то nodeJS однозначно, а если просто оповещения то твой способ самое то.