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

magarych

Постоялец
Регистрация
21 Июн 2013
Сообщения
133
Реакции
64
Собственно задача сделать так, чтобы при написании сообщений другим пользователям, либо при публикации комментария к посту, новое сообщение появлялось без перезагрузки страницы.
В каком направлении необходимо копать. Я так понимаю сокеты + сигналы. Возможно ajax на jquery и что-то еще.
Можете мне что-нибудь посоветовать?
 
Копай веб-сокеты. Вообще эта фигня на NodeJS пишеться за пару часов. Если будешь делать на ajax то приготовься что при большом количестве соединений все будет тормозить.
 
Я так понимаю разбираться надо с tornado + websockets, для старых браузеров можно использовать socket.io или sock.js и соответствующие враперыДля просмотра ссылки Войди или ЗарегистрируйсяДля просмотра ссылки Войди или Зарегистрируйся
 
Да все верно, но я бы не рекомендовал питон, все равно там все это через жопу, плюс нет никаких механизмов авторизации и аутентефикации, придеться все это писать самому как и полинг курсоры для хранилища (хотя можешь взять редис там pub/sub из коробки). Попробуй ноду или фреймворк над ней, там все это в разы проще. Если нужен пример на питоне можешь глянуть например Для просмотра ссылки Войди или Зарегистрируйся но вместо socket.io лучше использовать socket.js так как более стабильный и гибкий.
 
Что вы можете посоветовать в связи с ограничением в 2 соединения? Слышал есть возможность подключения дополнительного канала на Server-Sent Events для получения сообщений с сервера.
 
Что вы можете посоветовать в связи с ограничением в 2 соединения? Слышал есть возможность подключения дополнительного канала на Server-Sent Events для получения сообщений с сервера.
Ты имеешь в виду на одного клиента? А зачем больше? Одного вполне достаточно канал-то бидиректный с поддержкой состояния. Просто подумай сам вот откроешь ты например с клиента больше одного, так как клиент сайд у тебя асинхронный жабаскрипт, то это может привести ко всяким неприятным ситуациям типо race condition и прочей инконсистентности.
 
Если сообщение не должно появляться мгновенно, то достаточно обычного jquery проверяющего логическое значение через определенное время.
Если оно изменилось, то подтянуть измененные данные.

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

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

Сокеты больше для живого общения с постоянным коннектом. Тут он может быть и не нужен.
 
таймер на JS -> jQuery запрос -> обработчик на сервере (получение принятых сообщений от других пользователей) -> распарс у клиента (возможно нужно будет json для получения даты, времени и т.д.) -> обновление элементов DOM
Ну все зависит от задачи, и от "реальности" времени, если аля чатик в вк, то nodeJS однозначно, а если просто оповещения то твой способ самое то.
 
Назад
Сверху