Задать вопрос
Noizefan
@Noizefan

Как реализовать real-time систему диалогов?

Всем привет! Разрабатываю в одиночку веб-проект, некоего рода мини социальная сеть.
Реализую систему диалогов и общения... Сама структура понятна и ясна, статичная версия готова.

Стыдно даже говорить о том, чтоб в 2016 году обновлять страницу, чтобы посмотреть на новые сообщения, правда? Было решено разработать real-time получение сообщений, в общем, как, скажем, во вконтакте.

Пока реализовал short-pooling, тоесть простой ajax post на setInterval'e раз в 10 сек. Такая задумка не нравится, ввиду большой нагрузки на сервер при большом потоке пользователей, и большой задержкой между отправлением-получением сообщения. В ВК между ними задержка в одну-две секунды... хочется достичь такого же результата. (Ясное дело, гигантские дата-центры, большие вычислительные мощности, но если теоретически расположить ВК на одном сервере и уменьшить количество пользователей до 10 тыс - оно тоже будет работать)
Реализованый ныне вариант неприемлим, хочется сделать так, чтобы при достижении больших нагрузок не пришлось переписывать клиентский и серверный код по 50 раз

Начитался про long-pooling, web socket'ы, связку nodeJS+socketIO, ну и не знаю куда идти, что делать, какую технологию выбирать. Все советуют разное.

Интересует, как это реализовано в настоящих социальных сетях и других хайлоад проектах. Был бы очень рад детальному объяснению клиентской и серверной части. Просто, специалисты в гугле отправляют читать маны от и до, а до конкретных разъяснений архитектуры не доходит. Зная все буквы азбуки - не научиться самому составлять осмысленные предложения, не увидев примеры.
Но и 1000 и 1 иероглиф учить не хочется ради одного предложения.

Плюс ко всему больше специализируюсь на backend, поэтому прошу хотя бы литературы, отвечающей на мои вопросы.
  • Вопрос задан
  • 520 просмотров
Подписаться 1 Оценить 6 комментариев
Решения вопроса 3
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Выбирайте любую с webSocket.
Ответ написан
Комментировать
nazarpc
@nazarpc
Open Source enthusiast
Если есть возможность - используйте WebSockets. Использовать для них можно и JavaScript, и PHP, и Python, который у вас в профиле указан. Это уже как вам удобнее.
Ответ написан
Комментировать
VoidVolker
@VoidVolker Куратор тега JavaScript
Dark side eye. А у нас печеньки! А у вас?
WebSockets - крутая штука. Можно взять готовую библиотеку - например, там же есть готовые примеры, которые можно сразу использовать. Если возникнут какие вопросы по использованию - велкам в чат.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы