Xpoint
   [напомнить пароль]

Чат PHP/MySQL

Метки: [без меток]
2012-02-06 03:49:50 [обр] SunDey[досье]

Здравствуйте

Стала такая задача: написать браузерный чат в котором: оператор может иметь несколько собеседников (количество определяется через cms), передавать собеседника другому оператору с сохранением хистори. Задействовать нужно php+mysql.

Чат должен поддерживать много соединений, поддерживался максимальным колличеством браузеров, также нужно чтобы все данные проходили через мой пхп скрипт, т.к. необходимо сохранять хистори и разнообразные Accept/Reject чатов операторами для дальнейшего сбора статистики. Воспользовавшись гуглом он мне выдал массу информации из которой много устаревшей, а также новая которая не поддерживается некоторыми браузерами (как WebSocket)

Внимание привлекло решение http://dklab.ru/lib/dklab_realplexor/, или же установить jabber сервер и каким-то образом использовать его (возможно ли его использование без определённого глобального UIN я так и не понял).

Также в основном много примеров jQuery/ajax с таким алгоритмом: клиент отправляет ajax запрос на сервер, а там соединение задерживатся до формирование ответа (получается что невозможно отправить два сообщения одно за другим, что не подходит...)

Я просто не знаю на чём остановиться, с такой задачей никгода не сталкивался. Посоветуйте пожалуйста какой нибудь современный способ comet-обмена данными чтобы поддерживали все браузеры и наименне всего нагружало сервер

спустя 8 часов [обр] Евгений Седов aka KPbIC(0/176)[досье]
Чатиться надо в чатах чат-клиентами по IRC, браузерами ходить по вебу через HTTP. А не наоборот.
спустя 10 минут [обр] SunDey[досье]
Евгений Седов aka KPbIC[досье]
Т.е. это следует понимать как то что Jabber(XMPP) не подходит? Или то что сама идея написания чата в браузере неправильна? Может оно и так - только так поставлена задача заказчиком, а следовательно её нужно выполнить
спустя 27 минут [обр] Евгений Седов aka KPbIC(0/176)[досье]
сообщение промодерировано

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

так поставлена задача заказчиком, а следовательно её нужно выполнить

Закачику не нужен конкретный протокол, ему нужен функционал, но закачзик не разбирается в тонкостях. Указывая известную ему технологию, он не берет на себя ответственность за ее выбор. Он будет требовать от вас реализовать нужные ему возможности. И это те возможности, которые уже есть в IRC, но которых нет в HTTP и в XMPP, и которые вы намучаетесь делать, не факт, что сделать сможете, и работать это все будет в лучшем случае неоптимально.

спустя 27 минут [обр] SunDey[досье]

Евгений Седов aka KPbIC[досье]
Спасибо за то что высказали своё мнение и я не спорю что нужно делать всё правильно.

Но хотелось бы всё-таки услышать мнение специалиста касаемо чата и HTTP как это описано в начале этого топика, на чём это лучше всего реализовывать

спустя 21 минуту [обр] Jared(0/26)[досье]
SunDey[досье], зачем вам вообще comet? Чем классический рефреш раз в 3-5 сек. не устраивает?
Для jabber и IRC, насколько я знаю, существует немало web-based клиентов.
спустя 11 минут [обр] SunDey[досье]
Т.е. всё таки рекомендуете установить jabber-сервер и прикручивать к браузеру jabber-клиент? Можно ли работать с хистори из PHP
Можете описать подробненько, потому что информации масса, не знаю с чего начать.
спустя 20 минут [обр] Евгений Седов aka KPbIC(0/176)[досье]
Не могли бы вы описать задачу на уровне бизнес-логики?
спустя 2 минуты [обр] Jared(0/26)[досье]
SunDey[досье] полагаю, зависит от конкретной реализации джаббер сервера. Если конкретный сервер хранит хистори, скажем, в СУБД, то подключайтесь к этой базе чем вам удобно и творите все, что хотите.
Начните с того, чтобы по-быстрому, за пару часов, сваять прототип вашего будущего творения. Поставьте сервер, прикрутите веб-клиент и посмотрите что получится. У вас появится более полное понимание что к чему.
спустя 9 минут [обр] SunDey[досье]
Евгений Седов aka KPbIC[досье]
Клиент заходит на сайт, выбирает тему (раздел), подаёт запрос на то чтобы початиться (предварительно заполнив форму), если есть в наличии свободные операторы то он подключается к оператору из этой тематики, если свободных нет, то он становится в очередь и ожидает пока освободится какой нибудь.
У оператора может быть несколько окон для общения (задаётся из админки сайта).
Очередь ожидающих также ограничивается.
Также необходимо собирать всяческую статистику (учитывать сколько человек и как долго находились в ожидании к оператору, сколько отказались от ожидания и т.д.)
спустя 1 минуту [обр] SunDey[досье]
Также необходимо предусмотреть передачу собеседника другому оператору (переключить клиента на другого оператора с сохранением хистори)
спустя 7 минут [обр] Евгений Седов aka KPbIC(0/176)[досье]
Это какая-то тех.поддержка? Клиенты друг с другом общаться могут?
спустя 8 минут [обр] SunDey[досье]
Евгений Седов aka KPbIC[досье]
Это внутренний проект компании с распределёнными по стране офисами.
Клиенты не могут общаться друг с другом - только с тем оператором которого ему предоставят, по тематике которой он запрашивал.
спустя 28 минут [обр] Евгений Седов aka KPbIC(0/176)[досье]
Это офисы общаются с центральной диспетчерской или покупатели общаются с офисами?
спустя 4 минуты [обр] SunDey[досье]
Евгений Седов aka KPbIC[досье]
покупатели с офисами
спустя 23 минуты [обр] Евгений Седов aka KPbIC(0/176)[досье]
Я бы на вашем месте выбрал чистый XMPP (не поверх HTTP). Либы есть на любой вкус.
спустя 3 часа 50 минут [обр] Jared(0/26)[досье]
Евгений Седов aka KPbIC[досье] а на клиенте что? Я полагаю, задача поставлена так, чтобы на клиенте не требовалось дополнительного софта.
спустя 54 минуты [обр] Евгений Седов aka KPbIC(0/176)[досье]
сообщение промодерировано

Покупатели подключаются к любому жаббер-серверу любым софтом. Это их дела, мы туда не лезем. Сами либо поднимаем свой сервер на своем домене, чтобы было красиво, либо тоже подключаемся к публичному серверу — не принципиально. А вот клиента для себя пишем сами. Причем, в сторону жаббер-сервера это клиент XMPP, а на наших операторов это сервер, где мы реализуем любой, удобный нам протокол. Операторам пишем клиенты необходимого уровня сложности.

Jared[досье] Или вы жаббер-клиента называете "дополнительным софтом"?

спустя 36 минут [обр] Евгений Седов aka KPbIC(0/176)[досье]
М Не вижу ни одного вопроса по PHP. Пока перенесу в другой форум.
спустя 28 секунд [обр] Евгений Седов aka KPbIC(0/176)[досье]
М Перенесено из форума "Программирование::PHP"
спустя 21 минуту [обр] SunDey[досье]

Да попробую значит использовать jabber для создания чата.

Спасибо за помощь!

спустя 3 часа 44 минуты [обр] Jared(0/26)[досье]
Евгений Седов aka KPbIC[досье] выхожу за пределы темы, но да, jabber клиент, как и любой IM клиент входит в рамки "дополнительного" софта. Стандартный сетевой софт - IE, outlook express, и гиковские консольные пинг, трасерт, телнет, фтп.
спустя 8 минут [обр] Евгений Седов aka KPbIC(0/176)[досье]
Jared[досье] Вот, пусть телнетом и шпарят.
спустя 14 часов [обр] Сергей Костин(0/21)[досье]
SunDey[досье] Можете посмотреть в сторону node.js
спустя 25 минут [обр] Virtex[досье]

Евгений Седов aka KPbIC[досье], а что делать, если покупатели не хотят устанавливать jabber-клиент, а заказчик требует, чтобы всё работало через браузер? Например, может аргументировать это тем, что такой чат есть у ВКонтакте и у прочих сайтов, где реализован online-консультант.

Я недавно наткнулся на библиотеку http://socket.io/, которая позволяет реализовывать real-time приложения через браузер. На хабре есть статья, по которой можно сделать чат на node.js + socket.io. Но пока непонятно, каким образом это всё работает, и какие нагрузки выдерживает.

спустя 1 час 30 минут [обр] Евгений Седов aka KPbIC(0/176)[досье]

Virtex[досье] Это вопрос не технический, его каждый решает сам.

Ставить гигабайтные игрушки — это пожалуйста, а добавить аккаунт в IM-клиент, так сразу трудности. Я, например, заказчика пытаюсь убедить. А если не получается, то чаще всего я с таким заказчиком просто не работаю. И все довольны: я не занимаюсь противными мне вещами, а заказчик получает на стороне то, о чем его предупреждали.

спустя 1 час 41 минуту [обр] Дмитрий Попов(6/509)[досье]
сообщение промодерировано
Евгений Седов aka KPbIC[досье] - Я правильно понимаю, что Вы обычно пытаетесь убедить заказчика, в том, что посетителю его сайта (потенциальному покупателю) лучше вместо простой кнопочки "онлайн поддержка" открывающей браузерный чат, дать инструкцию по установке джаббера или IRC?
спустя 34 минуты [обр] Евгений Седов aka KPbIC(0/176)[досье]
Дмитрий Попов[досье] Да, именно так я и поступаю и не разу об этом не пожалел. А когда делал по-другому, огребал кучу неприятностей, в том числе, и по деньгам.
спустя 9 минут [обр] Филипп Ткачев(0/112)[досье]
Честно говоря, есть смысл подключить чей-нибудь сторонний сервис к сайту, в котором все уже давно реализовано на приличном уровне. Я так понимаю вас интересует поддержка клиента. Например вот такой.
спустя 10 минут [обр] Евгений Седов aka KPbIC(0/176)[досье]
Филипп Ткачев[досье] В "уже сделали свой выбор" РБК'шные конторы. Покажите мне на сайте питерского hc страницу с этим сервисом.
спустя 1 час 39 минут [обр] Филипп Ткачев(0/112)[досье]
Вероятно услуга их не устроила. У них нет никакого сейчас чата. Значит не подошел. Насчет HС у меня весьма неприятное впечатление сложилось после того, как отключили виртуалку (VPS) за повышенный I/O (импортировали большую базу). Может я что-то недопонимаю, ресурсы нужно ограничивать на уровне контейнера, а не отключать насовсем.
спустя 1 час 58 минут [обр] Дмитрий Попов(6/509)[досье]

В том ли проблема, "когда делали по другому", что технология не устроила, или же все-таки проблема в реализации, Евгений?

Вы сейчас с точки зрения разработки продуктов абсрудную вещь пишите. Я даже не побоюсь сказать слово "чушь". У меня есть контора которая что-то продает (товар, услугу что-то еще). Ко мне пришел человек, по-моему очевидно что этому человеку нужно дать простой и наиболее удобный конкретно ему способ легко со мной связаться. Хрен с ним с отсутствием чата - 80% людей устроит наличие одновременно доступного мыла, скайпа и icq (сейчас может еще мейлру.агент).
Но заставлять людей ставить себе клиента для совершенно не используемой массами технологии (jabber и тем более IRC) - это же ужас ужас.

Отвечая же на вопрос автора - писать такую систему с нуля - это дорого и бессмысленно. Сейчас существует 100 миллионов систем организации службы поддержки саппорта, которые включают в себя и лайв-чаты со сложным функционалом и одновременно саппорт-доски с той же email интеграцией. В итоге такое решение выйдет дешевле своей разработки - это уже проверено и посчитано много раз.

З.Ы. Касаемо РБК, я, к сожалению далек от темы и там мне просто в принципе не понятно - а для каких проектов и зачем им в принципе наличие чата.

спустя 42 минуты [обр] Евгений Седов aka KPbIC(0/176)[досье]

Дмитрий Попов[досье] Я свою позицию изложил. В дополнение могу сказать, что считаю концептуально неправильным отслеживать события сервера клиентскими запросами.

IRC для данной темы не актуален, а "ICQ vs XMPP" уже обсуждали на Точке, воспользуйтесь поиском — вы отстали от жизни.

Powered by POEM™ Engine Copyright © 2002-2005