Я разрабатываю чат-модуль для drupal. Я планирую предоставить несколько бэкэндов для обработки сообщений чата. Сначала я начал с AJAX и теперь включил в него длинную методику опроса. Затем я наткнулся на обезьяну (ajax push engine), и это выглядит многообещающе. Но для работы модуля чата потребуется установка обезьяны на стороне сервера. Хотя я также включу это в качестве одного из бэкендов для чата, основное внимание уделяю поиску решения, которое может обрабатывать приемлемое количество одновременных чатов, без каких-либо модификаций на стороне сервера, чтобы люди могли легко его использовать.
Я занимался серфингом в сети и натолкнулся на программирование PHP Socket, и это похоже на жизнеспособный вариант.
О чем вы должны думать: каждое новое соединение блокирует процесс PHP. Таким образом, если вы устанавливаете соединение сокетов где-то и позволяете ему долгое время открываться, процесс PHP будет заблокирован, он не сможет принять другое соединение. Итак, если у вас было 50 процессов PHP, за один раз можно установить 50 подключений.
Вот почему я лично предпочитаю использовать Node.JS для кометных приложений, таких как chat …
Является ли PHP-сокет жизнеспособным вариантом для создания чата на базе jQuery PHP? – Нет 🙂
И учитывая ваши ограничения на общий хост и около 50 МБ оперативной памяти, я бы предложил, чтобы PHP тоже не был вариантом.
На самом деле, HTTP не идеален для такого рода вещей, HTTP – это протокол, основанный на отсутствии ответа на запрос / ответ, и вам нужен постоянный постоянный протокол, такой как XMPP.
Вы можете «взломать» его с помощью веб-технологий, как вы уже делали с длинным опросом и ajax, что является технически единственным способом сделать это через HTTP, все остальные варианты HTTP-чата – это либо непрерывный опрос, либо длительный опрос, это единственный способ сделать это с настройкой http-клиента клиентского сервера.
Вы можете сделать это «легче», используя технику, такую как node.js (см. Демонстрацию чата node.js). Это легче на стороне сервера ресурсов, но отбрасывает ваше общее хост-требование.
Или вы можете сделать это с помощью техников, созданных для этой работы, которые будут использовать сервер XMPP / Jabber на бэкэнд и клиент XMPP на основе flash / flex на передней панели – это легко поддерживает 5000+ соединений на серверный сервер, но снова убивается общим хостом.
В долгосрочной, долгосрочной и долгосрочной перспективе ответ на веб-архитектуру должен состоять в том, чтобы иметь HTTP-сервер, кэш и клиент на всех устройствах, это сделало бы каждое устройство узлом в сети P2P и всем нам что-то делать, но это далеко все же 🙂
Надеюсь, это поможет!
проверьте этот учебник ….. это поможет вам создать веб-чат-приложение, используя jquery http://net.tutsplus.com/tutorials/javascript-ajax/how-to-create-a-simple-web-based- чат-приложение /
вы можете иметь исходный код и попробовать себя и узнать …
PHP не подходит для такого рода проблем. Вы можете написать демона, который использует функции pctnl для разветвления нового процесса на каждом соединении (до некоторых настроенных # активных процессов), но он собирается пережевывать память, потому что вы открываете новый процесс для каждого соединения. Учитывая ваши требования, я бы посмотрел в другое место.
Кажется, вы хотите, чтобы этот материал был размещен на общедоступном веб-хостинге, и хотя я могу понять, почему, вы должны хотя бы признать, что у вас действительно нет веб-приложения, у вас есть приложение для чата (возможно, имеет веб-интерфейс).
Я думаю, что это может сработать, с php, jQuery и некоторым SQL на сервере, а также с некоторыми сильными fudging
Я бы использовал Ajax, хотя бы почему? то вы coudl пропустите сокеты?