Единый форум поддержки

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Единый форум поддержки » Сделаем сервис лучше » [реализовано скриптом] Чат для форума


[реализовано скриптом] Чат для форума

Сообщений 81 страница 100 из 106

81

John Warner
Такое впечатление, что чаты только на php+mysql и флеше делать можно.
Мы писали на C++ + long-polling, очень быстрый. NodeJS + Websocket — еще быстрее. Но Mysql, на мой взгляд, в чатах масштаба нашего сервиса — вообще смерть.

0

82

Duka написал(а):

Такое впечатление, что чаты только на php+mysql и флеше делать можно.
Мы писали на C++ + long-polling, очень быстрый. NodeJS + Websocket — еще быстрее. Но Mysql, на мой взгляд, в чатах масштаба нашего сервиса — вообще смерть.

Я и не сомневался, что ты крут..Но ты не заметил, что ты превратился в человека, который периодически сюда заглядывает, и рассказывает всем, что они неумехи, а ты крут? Тебе осталось добавить, чтобы забили на идею чата и не занимались фигней...Собсно все, кто пытается растормошить Майбб занимаются фигней, правда когда то и ты этим занимался, но ты это перерос - ты стал крутым, с чем и поздравляю..

+4

83

Duka написал(а):

John Warner
Такое впечатление, что чаты только на php+mysql и флеше делать можно.
Мы писали на C++ + long-polling, очень быстрый. NodeJS + Websocket — еще быстрее. Но Mysql, на мой взгляд, в чатах масштаба нашего сервиса — вообще смерть.

Если так подумать, то MySQL вообще плох в масштабах крупных сервисов из-за необходимости большого количества вещей в прослойке (я клоню к отсутствию SQL-функций и процедур). Но переводиться с MySQL - гемморой запредельный. Проще сделать MyBB 2.0 для такой вещи, но, судя по скорости введения новинок, это случится, в лучшем случае, лет эдак через 10 :D

Вообще говоря, опубликовал бы Макс исходный код движка хотя бы для ограниченного круга лиц-активистов форума (тому же kolobdur74 или Deff'у) и сразу бы много полезных вещей появилось бы.
Но это мечты...


По теме: можно попытаться сделать ajax-подгрузку сообщений и прочие красоты, симулирующие чат на основе RSS (благо туда включается сообщение целиком, имя автора (без uid, увы) и время сообщения), однако мы сразу же упрёмся в проблему ограничения количества сообщений в теме, существование которого меня до сих пор вводит в глубокий ступор (серьёзно, почему 1000, а не, скажем, 5 или 10к? Профита же никакого, единицы тем достигают это отметки)...

Теоретически, можно запаститьсь этими темами впрок, а форум, где они хранится прятать... Но это откровенный костыль.

0

84

kozhilya написал(а):

Если так подумать, то MySQL вообще плох в масштабах крупных сервисов из-за необходимости большого количества вещей в прослойке (я клоню к отсутствию SQL-функций и процедур). Но переводиться с MySQL - гемморой запредельный. Проще сделать MyBB 2.0 для такой вещи, но, судя по скорости введения новинок, это случится, в лучшем случае, лет эдак через 10

Вообще говоря, опубликовал бы Макс исходный код движка хотя бы для ограниченного круга лиц-активистов форума (тому же kolobdur74 или Deff'у) и сразу бы много полезных вещей появилось бы.
Но это мечты...

По теме: можно попытаться сделать ajax-подгрузку сообщений и прочие красоты, симулирующие чат на основе RSS (благо туда включается сообщение целиком, имя автора (без uid, увы) и время сообщения), однако мы сразу же упрёмся в проблему ограничения количества сообщений в теме, существование которого меня до сих пор вводит в глубокий ступор

Проблемы решаемы, просто две темы - одна административная (Модераторы чата, Забаненные и текущая ссылка на тему с чат сообщениями) Есть скрипт автопродления тем, при его сработке кидаем в админ-тему новую ссылку на текущую тему сообщений

0

85

Deff написал(а):

Проблемы решаемы, просто две темы - одна административная (Модераторы чата, Забаненные и текущая ссылка на тему с чат сообщениями) Есть скрипт автопродления тем, при его сработке кидаем в админ-тему новую ссылку на текущую тему сообщений

Права доступа, как по мне, лучше проверять на основе GroupID: зачем изобретать велосипед? Если человек не имеет право писать в раздел - он туда не напишет даже если очень сильно захочет.
По мере написание сообщения понял, что идея довольно скверная из-за того, что юзеру не будут видны модераторы.

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

План по завоеванию мира

0) Нам нужен подфорум с темами чата, открытый для гостей (иначе RSS выдаст "No data"). В нём должны всегда быть 2 темы: одна пустая и одна текущая. Пустая будет для предотвращения создания нескольких тем из-за потенциальных возможностей создания нескольких тем. Превентативность, в данном случае, нам поможет.

1) На отдельной странице (/pages/smth?) размечаем чат:
- Служебный iframe
- Поле сообщений
- Форма ввода

2) Грузим в iframe подфорум, узнаём id актуальной темы чата.
2.1) Если у нас не доступа - выводим "Access denied"

3) Грузим тему (достаточно 1-ю страницу), проверяем права
3.1) Нет формы ответа - Читатель
3.1) Есть форма ответа - Пользователь
3.2) Есть кнопка "Редактировать" - Модератор

4) В setInterval(function, int) начинаем грузить последние сообщения.
4.1) (Для предотварщения "слипаний" сообщений и вообще спама) Если в новых сообщений есть собщение самого пользователя, замораживаем на 10 секунд форму отправки сообщений

5) Поле ввода сообщения делаем простейшим: в нём работают все bb-коды, но простой доступ мы дадим только к базовым (b, i, u, s, url, img) и смайлам.
5.1) За счёт того, что RSS-ответ даётся в виде HTML, парсить текст не придётся. Но упростить отображение [ quote ] стоит.

6) При отправке сообщения (стоит добавить поддержку Ctrl + Enter), генерируем POST-запрос к серверу (надо будет с iframe тянуть process_form дабы получить formkey.
6.0) Как вариант, постить можно через тот же iframe. Возможно, это проще, но задержку никто не отменял.
6.1) Если мы получили в ответ ошибку (этот момент надо протестировать), переотправляем сообщение в следующую тему.
6.2) Если в новой теме (проверяем по iframe) сообщение #2 принадлежит пользователю, то создаём следующую тему.
6.3) В любом случае, блокируем отправку сообщения (разблокировка произойдёт по пункту 4.1).

Очевидные проблемы данного плана:
1) Ни в RSS, ни в Atom нет uid отправителя. Как пройти кому-то в профиль из чата - вопрос открытый.
1.1) Блокировка будет довольно заторможеной.
2) Список людей, смотрящих чат - информация недостижимая либо получаемая слишком сложным образом.
3) Если по какой-то причине не сработает 6.2 - чат сломается.
4) Редактирование сообщений не работает для нас: в RSS не фиксируется, что какие-то сообщения было изменены.
5) Сообщения могут пропадать, если каким-то образом за паузу между RSS-запросами будет получено слишком много сообщений (хотя получить 30 сообщений за 10 секунд при реализации пунктов 6.3 и 4.1 плана будет возмножно только на сверх-загруженных чатах).
5) Нам может потребоваться 1 или даже 2 iframe. Благо, их обработку можно сделать асинхронной.

В принципе, можно сделать дополнительные слэш-команды. Например /me <Сообщение> для описания соотояния (стандарт в чатах)
Имхо, надо сделать /delete <pid> и /deleteall <username> модераторам для контроля за содержимым чата.


Надеюсь, ничего не забыл. Это только идея архитектуры, по хорошему, тут многое можно поменять, а что-то прямо необходимо... В принципе, я могу этим позаниматься, но свободного времени у меня не так уж и много, увы...

+1

86

kozhilya написал(а):

1.1) Блокировка будет довольно заторможеной.

Почему ? - список блокировки переписывается в каждом сообщении и параллельно в Админ-теме (если есть смена блокировочного списка по сравнению с предыдущим постом, в теме сообщений), следущее сообщение просматривает предыдущее
Блокировочные сообщения модеров - по клику на ник - тож переписываются в общий чат - но не отражаются*или отражаются - такой то - такой то - заблокирован - или разблокирован)
(Блокировку текущего юзера мон просто делать скриптом, после прочтения скрытого списка в сообщении - блокируя клавишу отправки.)
По мне лучше читать из топика, ибо до 100 челов в чате - запросов немного, основа скрипта это две сложности(я их уже описывал Fover в этой теме)

Отредактировано Deff (Пн, 17 Ноя 2014 16:38:54)

0

87

Deff написал(а):

Почему ? - список блокировки переписывается в каждом сообщении и параллельно в Админ-теме (если есть смена блокировочного списка по сравнению с предыдущим постом, в теме сообщений), следущее сообщение просматривает предыдущее
Блокировочные сообщения модеров - по клику на ник - тож переписываются в общий чат - но не отражаются*или отражаются - такой то - такой то - заблокирован - или разблокирован)
(Блокировку текущего юзера мон просто делать скриптом, после прочтения скрытого списка в сообщении - блокируя клавишу отправки.)

Ну да, блокировать, например, слеш-командой /ban, это более-менее понятно... Это уже, по сути, надстройки. А у нас пока даже фундамент не готов :)

Deff написал(а):

По мне лучше читать из топика, ибо до 100 челов в чате - запросов немного, основа скрипта это две сложности(я их уже описывал Fover в этой теме)

Ты про это?

Хм... Может быть, но, боюсь, но я вижу несколько проблем.

1) Нам придётся потратить очень много усилий на уборку мусора (полноценная колонка автора и подписи для чата - мусор).

2) У нас не будет какой-то хост-страницы, на которую можно будет просто войти и начать болтать.
2.1) Если мы сделаем её редиректной, то всё равно останутся "магические" для юзера числа в адресной строке.
2.2) И даже если сделать хост-страницу, и из тем всё прогружать, то окажется, что у нас будет загружаться очень много излишнего кода (<head>, бесполезный для нас) + появится необходимость листать.
У нас же есть RSS, в которой для варианта с хост-страницей нам не хватает только данных пользователя.

0

88

kozhilya написал(а):

1) Нам придётся потратить очень много усилий на уборку мусора (полноценная колонка автора и подписи для чата - мусор).

Хм - считываешь Аяксом .post-content и ремувишь подпись
2) У нас не будет какой-то хост-страницы, на которую можно будет просто войти и начать болтать.
.

Ни наю, я думал изобразить подобие фрейма - т.е div c overflow-y:auto и фиксированной шириной, на какую страницу вставить - пофег, всё равно аяксим (брал за основу cbox, запросто увеличить размер до страницы и форму ответа сделать полной)

kozhilya написал(а):

2.2) И даже если сделать хост-страницу, и из тем всё прогружать, то окажется, что у нас будет загружаться очень много излишнего кода (<head>, бесполезный для нас) + появится необходимость листать.
У нас же есть RSS, в которой для варианта с хост-страницей нам не хватает только данных пользователя.

Все посты в одной теме, лишнее будет если мы кидали сообщение на одну страницу, а она уже наросла до следущей, но таких событий 1/20
Вcю историю чата в текущей сессии (уже сформированную к выводу) храним на Storage

Отредактировано Deff (Пн, 17 Ноя 2014 17:18:33)

0

89

Deff написал(а):

Все посты в одной теме, лишнее будет если мы кидали сообщение на одну страницу, а она уже наросла до следушей, но таких событий 1/20
Вcю историю чата храним в текущей сессии на Storage

Хм... Ты имеешь в виду такой вариант архитектуры: у нас есть базовая страница, в которой у нас есть какая-та базовая часть, и мы просто наращиваем её... А при отправке сообщений мы попадём на новую страницу, на базе которой мы восстановим состояние до отправки...

Не знаю, не уверен, что это хорошая идея, хотя не отрицаю, что она имеет право на жизнь. Её основная проблема будет в том, что при отправке сообщения мы инициируем перезагрузку страницы. Это, опять-таки, не очень полезно для чата, так чат на время будет уходить из видимости...

А если форму оставлять в iframe... То зачем столько манипуляций и искажений оригинальной страницы?...

В конечном счёте, у нас схожие идеи, только, похоже, мы не можем понять логику друг-друга в вопросе прогрузки новых сообщений и их отправки :) Короче, надо поработать в этом вопросе...

0

90

kozhilya написал(а):

Хм... Ты имеешь в виду такой вариант архитектуры: у нас есть базовая страница, в которой у нас есть какая-та базовая часть, и мы просто наращиваем её... А при отправке сообщений мы попадём на новую страницу, на базе которой мы восстановим состояние до отправки...

Не знаю, не уверен, что это хорошая идея, хотя не отрицаю, что она имеет право на жизнь. Её основная проблема будет в том, что при отправке сообщения мы инициируем перезагрузку страницы. Это, опять-таки, не очень полезно для чата, так чат на время будет уходить из видимости...

Не понял - мы аяксом форму отправляем, есть уже десяток скриптов с отправкой формы аяксом, к примеру предпросмотр Личных сообщений

Отредактировано Deff (Пн, 17 Ноя 2014 18:14:00)

+1

91

Deff написал(а):

Не понял - мы аяксом форму отправляем, есть уже десяток скриптов с отправкой формы аяксом, к примеру предпросмотр Личных сообщений

Тогда у нас различие только в том, куда мы всё это собачим. Я строю новую страницу, ты перестраиваешь старую. И всё. :)

+1

92

kozhilya
Ващет я хотел собачить на любую, удобно когда чат тыкнули и он открыт, он на текущей странице( ибо иногда именно хочется обсудить тематику по текущей странице форума, а про Fover я сказал именно о задаче лишних запросов, одна из главных в скрипто-чате, т.е делаем запросы лишь с активной вкладки(чем ксать не грешат уведомления на руссфф)

Отредактировано Deff (Пн, 17 Ноя 2014 19:07:33)

+1

93

kolobdur74 написал(а):

Я и не сомневался, что ты крут..Но ты не заметил, что ты превратился в человека, который периодически сюда заглядывает, и рассказывает всем, что они неумехи, а ты крут? Тебе осталось добавить, чтобы забили на идею чата и не занимались фигней...Собсно все, кто пытается растормошить Майбб занимаются фигней, правда когда то и ты этим занимался, но ты это перерос - ты стал крутым, с чем и поздравляю..

Бла бла бла бла бла. Не занимайтесь фигней)
Я тоже пытаюсь "растормошить мубб", просто я делаю это в тайне от других и не занимаюсь афишированием) Поверьте, если бы мне было все равно на Мубб, мы бы не были партнером номер 1 с третью всей аудитории.

kozhilya написал(а):

Если так подумать, то MySQL вообще плох в масштабах крупных сервисов из-за необходимости большого количества вещей в прослойке (я клоню к отсутствию SQL-функций и процедур). Но переводиться с MySQL - гемморой запредельный.

Боже упаси что-то переделывать — наедимся проблем и гавном 100%. По-моему, мы обсуждаем чат.

kozhilya написал(а):

Проще сделать MyBB 2.0 для такой вещи, но, судя по скорости введения новинок, это случится, в лучшем случае, лет эдак через 10

Этого никогда не случится ) О MyBB 2.0 слышал 4-5 лет назад. Просто слова в воздух. Можно о многом вспомнить.

Например, наблюдения подсказывают, что типичный воркфлоу реализации новой фичи на Мубб выглядит примерно так:

Придумать гениальную идею -> Макс с энтузиазмом хватается за нее -> Макс понимает в какие дебри он полез и на сколько это большая задумка -> Макс забивает на идею и оставляет недоделки.

А идеи были такие: чаты на форумах (кстати, на nodejs он делал, и тот что во время профилактики тоже на нем работал, как раз из заготовок), Mybb 2.0, Единый аккаунт, мультиязычность, те же флажки, API, что там еще забыл... Да и не важно что забыл.

kozhilya написал(а):

Вообще говоря, опубликовал бы Макс исходный код движка хотя бы для ограниченного круга лиц-активистов форума (тому же kolobdur74 или Deff'у) и сразу бы много полезных вещей появилось бы.

Узнает один - узнают все.

Поэтому тем, кто считает, что я тут изливаю говна — считайте дальше, я оправдываться не стану. Просто вы судите по одной стороне монеты. За все время общения с Максимом я получил достаточные представления об этом человеке, и должно произойти что-то нереальное, чтобы он закрутил все гайки до конца и занялся делом.

0

94

Deff написал(а):

т.е делаем запросы лишь с активной вкладки(чем ксать не грешат уведомления на руссфф)

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

0

95

Deff написал(а):

Ващет я хотел собачить на любую, удобно когда чат тыкнули и он открыт, он на текущей странице( ибо иногда именно хочется обсудить тематику по текущей странице форума, а про Fover я сказал именно о задаче лишних запросов, одна из главных в скрипто-чате, т.е делаем запросы лишь с активной вкладки(чем ксать не грешат уведомления на руссфф)

А... Блин, чёт я не догнал твою идею :Ы
Тогда, по сути, мы хоим сделать одно и тоже, только ты в мини-фрейме в углу страницы, а я на всей странице. Одно другому не мешает :)

Duka написал(а):

Узнает один - узнают все.

Тут палка о двух концах. Либо застой и то, что ты описал абзацем выше, либо публичность с прогрессом...

+1

96

Duka написал(а):

Бла бла бла бла бла. Не занимайтесь фигней)
Я тоже пытаюсь "растормошить мубб", просто я делаю это в тайне от других и не занимаюсь афишированием) Поверьте, если бы мне было все равно на Мубб, мы бы не были партнером номер 1 с третью всей аудитории.

Верю, что в тайне, что на своей партнерке..

Duka написал(а):

Поэтому тем, кто считает, что я тут изливаю говна — считайте дальше, я оправдываться не стану.

Речь не о том, что ты изливаешь [фекалий], тем более, что не изливаешь, а в том, что часто после твоих слов хочется забить на Майбб, во всяком случае у меня такая реакция..Ладно, это уже не по теме..

0

97

Duka написал(а): Поэтому тем, кто считает, что я тут изливаю

Ну я не считаю, дельные мысли есть и не плохие(я про вообче) и итоги тоже, но ЧСВ завышено, непонятен тады смысл обчения втут, - покрасовацо ?

0

98

Deff
Да, я такой весь красивый, на обложку меня, не иначе. )

0

99

Duka написал(а):

Такое впечатление, что чаты только на php+mysql и флеше делать можно.

я не спорю, я лишь высказал своё мнение...

0

100

Duka написал(а):

Да, я такой весь красивый, на обложку меня, не иначе. )

Ну лан, уговорил  :D
http://sa.uploads.ru/vmWQd.gif

+2


Вы здесь » Единый форум поддержки » Сделаем сервис лучше » [реализовано скриптом] Чат для форума