Мнгновеные сообщения на сайте. Как лучше реализовать?

12 3
R
На сайте с 03.08.2012
Offline
131
4742

Здравствуйте! Необходимо реализовать мнгновенные сообщения на сайте. Посещаемость будет большая. Следовательно и нагрузки тоже очень большие.

Как я думал сперва сделать: ajax`ом проверять каждые 3 сек на наличее новых сообщений и выводить если они есть. Но прочитав в интернете понял, что такой способ уложит сервер очень быстро.

Потом читал про сокеты немного, толком не понял как это все реализовать.

На сайте, будет создоваться грубо говоря тема (типа как на форуме), она должна записываться в базу данных, далее все кто там отвичают в этой теме, отвичают какбы в личку, т.е. все переписки в этой теме идут в личке, каждый видет только свою переписку. Сообщения должны мнговенно приходить (типа как Вконтакте, Фейсбуке).

Подскажите, как это реализовать грамотно на PHP+MySqli+javascript + что-то ещё для реализации мнгновенного сообщения.

Повторяю сообщений таких будет тясячи, серв не должен упасть.

Буду очень блогодарен за помощь!

Artisan
На сайте с 04.03.2005
Offline
383
#1
revered:
На сайте, будет создоваться грубо говоря тема (типа как на форуме), она должна записываться в базу данных, далее все кто там отвичают в этой теме, отвичают какбы в личку, т.е. все переписки в этой теме идут в личке, каждый видет только свою переписку. Сообщения должны мнговенно приходить (типа как Вконтакте, Фейсбуке).

Что значит отвечают

в теме как бы в личку?

Опишите все действия.

www.leak.info / ДАРОМ линки конкурентов и забытых доменов
R
На сайте с 03.08.2012
Offline
131
#2

Грубо говоря как форум. Создал тему, и переписываються. Только каждый видет свою переписку. Т.е. если ты переписываешься с ТС, то ты какбудто один в этой теме, других сообщений не видешь. А у ТС есть блок с именами пользователей, ну и соотвествено, когда нажимаешь на имя, показываеться переписка с ним, на другое имя, переписка с другим и т.д. И при этом всем, все сообщения приходят мнговенно, как вконтакте, как в ICQ и т.д. Т.е. перезагружать страницу не нужно.

Artisan
На сайте с 04.03.2005
Offline
383
#3
revered:
Грубо говоря как форум. Создал тему, и переписываються. Только каждый видет свою переписку. Т.е. если ты переписываешься с ТС, то ты какбудто один в этой теме, других сообщений не видешь. А у ТС есть блок с именами пользователей, ну и соотвествено, когда нажимаешь на имя, показываеться переписка с ним, на другое имя, переписка с другим и т.д. И при этом всем, все сообщения приходят мнговенно, как вконтакте, как в ICQ и т.д. Т.е. перезагружать страницу не нужно.

Это называется чат с личной комнатой.

HTTP push для Keep-Alive соединения,

надо писать специальный чат сервер.

PHP будет очень криво,

лучше другие способы.

Я могу такое написать.

В итоге будет бинарный

исполняемый файл для

FreeBSD или Linux

операционных систем.

Для согласования

цены и действий

пишите в приват.

Предлагайте,

сколько можете.

R
На сайте с 03.08.2012
Offline
131
#4

Я как прочитал в нете, пишут , что можно сделать PHP + JS + node.js. Почему с PHP криво будет? Мне не вариант, чтобы вы делали работу т.к.:

1) Я хочу научиться делать сам

2) Мне нужен не только этот чат, там на таком принцепе (мнгновенные сообщения, действия, типа публикация новости) будет много...

Оптимизайка
На сайте с 11.03.2012
Offline
396
#5

Читайте про websockets. Рекомендую nginx + push_stream_module. Не рекомендую node.js + socket.io - коллега жаловался что падало постоянно.

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
Glueon
На сайте с 26.07.2013
Offline
172
#6
Оптимизайка:
Читайте про websockets. Рекомендую nginx + push_stream_module. Не рекомендую node.js + socket.io - коллега жаловался что падало постоянно.

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

Есть много IP-сетей в аренду под прокси, парсинг, рассылки (optin), vpn и хостинг. Телега: @contactroot ⚒ ContactRoot команда опытных сисадминов (/ru/forum/861038), свой LIR: сдаем в аренду сети IPv4/v6 (/ru/forum/1012475).
R
На сайте с 03.08.2012
Offline
131
#7

Как я понял, это должно работать так: при отправке сообщения js посылает запрос nginx + push_stream_module, после чего nginx + push_stream_module передает его в PHP скрипт, этот скрипт добовляет сообщение в бд, и отсылает обратный запрос nginx + push_stream_module, и ответ идет пользователю которому написали сообщение.

Правильно?

Оптимизайка
На сайте с 11.03.2012
Offline
396
#8

Да, верно. Причем рассылка может быть широковещательной ("каналы" с подписчиками)

R
На сайте с 03.08.2012
Offline
131
#9

Не могу найти информацию по nginx + push_stream_module. Нашел немного информации, ну написано не понятным для меня языком. Мне бы желательно все на пальцах:) Может кто-нибудь прислать парочку ссылок на хорошие статьи, чтобы можно было разобраться незнающему человеку. Спасибо! P.S. только не присылайте пожалуйста анг. сайты

Оптимизайка
На сайте с 11.03.2012
Offline
396
#10

Без англ. сайтов в разработке ПО делать нечего, к сожалению. Ссылку с примерами я привел выше.

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий