Было бы полезно понять больше конкретных требований - совместный текстовый редактор мог бы означать много вещей. IM немного легче понять.
Для текстового редактора - в зависимости от ваших требований и т. Д. - я бы начал с использования существующего текстового редактора - http://www.tinymce.com/ имеет достойные функции и широко используется. Вы можете настроить его, чтобы удалить ненужные вам функции (например, форматирование), сохраняя при этом функции, которые ожидали многие люди (например, отменить/повторить и проверить орфографию). Вам нужно будет выяснить, как сделать его совместным, хотя - не уверен, какой пользовательский опыт вы намереваетесь. Относительно легко разрешить пользователям «по очереди» редактировать текущий документ - сохранить его в базе данных (используя PHP, Ruby или Rails, Java - что вам больше всего нравится), когда пользователь нажимает «сохранить» и разрабатывает блокирующий механизм для одновременного доступа. Гораздо сложнее, чтобы документ отражал изменения в реальном времени между несколькими пользователями и обновлял документ для всех этих пользователей. Вы бы выиграли от хорошей программы «DIFF». В этом случае я не думаю, что вы можете избежать AJAX - вам нужно, чтобы многие клиенты общались друг с другом, и нет надежного клиентского способа сделать это afaik.
Для IM я бы рассмотрел использование готового решения на основе XMPP (http://xmpp.org/xmpp-software/) - это в значительной степени согласованный стандарт для IM, и хотя он может потребоваться некоторое время, чтобы ускориться со стандартом и инструментами, если вы хотите доставить полнофункциональное приложение, скорее всего, будет намного проще построить поверх всех сантехники, которые другие сделали, чем создавать свои собственные.
Я бы предпочел держаться подальше от AJAX – zeitue
@TaylorBioniks - есть ли какие-либо другие ограничения, которые вы хотите наложить на решение? Это помогает, если вы укажете их вместе с вопросом ... –