Всем привет! Разрабатываю в одиночку веб-проект, некоего рода мини социальная сеть.
Реализую систему диалогов и общения... Сама структура понятна и ясна, статичная версия готова.
Стыдно даже говорить о том, чтоб в 2016 году обновлять страницу, чтобы посмотреть на новые сообщения, правда? Было решено разработать real-time получение сообщений, в общем, как, скажем, во вконтакте.
Пока реализовал short-pooling, тоесть простой ajax post на setInterval'e раз в 10 сек. Такая задумка не нравится, ввиду большой нагрузки на сервер при большом потоке пользователей, и большой задержкой между отправлением-получением сообщения. В ВК между ними задержка в одну-две секунды... хочется достичь такого же результата. (Ясное дело, гигантские дата-центры, большие вычислительные мощности, но если теоретически расположить ВК на одном сервере и уменьшить количество пользователей до 10 тыс - оно тоже будет работать)
Реализованый ныне вариант неприемлим, хочется сделать так, чтобы при достижении больших нагрузок не пришлось переписывать клиентский и серверный код по 50 раз
Начитался про long-pooling, web socket'ы, связку nodeJS+socketIO, ну и не знаю куда идти, что делать, какую технологию выбирать. Все советуют разное.
Интересует, как это реализовано в настоящих социальных сетях и других хайлоад проектах. Был бы очень рад детальному объяснению клиентской и серверной части. Просто, специалисты в гугле отправляют читать маны от и до, а до конкретных разъяснений архитектуры не доходит. Зная все буквы азбуки - не научиться самому составлять осмысленные предложения, не увидев примеры.
Но и 1000 и 1 иероглиф учить не хочется ради одного предложения.
Плюс ко всему больше специализируюсь на backend, поэтому прошу хотя бы литературы, отвечающей на мои вопросы.
Господа! Спасибо большое за ответы, задали вектор движения мне. Но есть теперь пара вопросов об архитектуре сервера на websocket'ах:
Реально ли выполнить его на чистом php, и чтоб оно было серьёзным проектом? Не хотелось бы подключать дополнительные модули к веб-серверу для этого. Нашёл реализацию на Хабре, но не уверен по поводу стабильности такой задумки. Тоесть, сможет оно всё хорошо работать на обычном хостинге? Если нет, и всё таки дело несерьёзное - какое решение использовать? Является ли NodeJS больше всех подходящим для моих задач?
Noizefan zzz: Обязательно! На каждый отдельный вопрос нужно заводить отдельный вопрос на Тостере.
Иначе с несколькими вопросами в одном и обсуждениями получается каша.
Noizefan zzz: Если хотите делать веб-приложение с приличной нагрузкой, то ajax-ы будут укладывать постоянно сервер. Можно взять саму систему websocket-ов и прикручивать ее к PHP, питону, java(а готовых примеров, по крайней мере русского содержания, можно на пальцах пересчитать). Или можете почитать про Nodejs, если с js знакомы, хоть как-то, то будет легок в понимании+включенная библиотека socket.io, суть которой заключается в том, что она сама выбирает оптимальный транспорт(сокеты, лонг-полинг, флеш-сокеты и т.д.). Примеры построения есть+ понятный сайт разработчиков. Удачи
Если есть возможность - используйте WebSockets. Использовать для них можно и JavaScript, и PHP, и Python, который у вас в профиле указан. Это уже как вам удобнее.
WebSockets - крутая штука. Можно взять готовую библиотеку - например, там же есть готовые примеры, которые можно сразу использовать. Если возникнут какие вопросы по использованию - велкам в чат.