как обнаружить входящее сообщение чата?

Я использую PHP, AJAX, базу данных MySQL и множество jQuery для создания прототипа веб-системы чата (похожей на Facebook Chat). Я застрял на том, как "прослушивать" входящие чаты... когда знать, что кто-то пытается со мной поговорить... и знать, что это новый чат, а не существующий чат.

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

Есть ли способ получить уведомление, когда, например, строка была вставлена ​​в таблицу базы данных MySQL, чтобы вместо постоянного опроса я мог просто получить уведомление, а затем посмотреть, что было вставлено?

Если есть лучший и более эффективный способ создать эти отношения в чате один на один, пожалуйста, дайте мне несколько предложений.

Спасибо, Христо


person Hristo    schedule 30.06.2010    source источник
comment
Вы можете использовать ajax для проверки ваших записей каждые X секунд... если введена запись с более высоким идентификатором, чем последнее полученное вами сообщение, вы либо открываете новое окно с новым пользователем в чате, либо печатаете его на заданном открытое окно, которое зависит от того, как работает ваш чат и какова структура вашей базы данных ... и если вы хотите что-то вроде мессенджера или простого многопользовательского чата.   -  person Prix    schedule 30.06.2010
comment
аааа .. более высокий идентификатор ... хороший момент, я не думал об этом. Я уходил от метки времени, но с этим трудно справиться. Спасибо, я попробую это.   -  person Hristo    schedule 30.06.2010


Ответы (2)


Вы должны использовать опрос, но вы можете использовать метод под названием Comet, который включает в себя длительный опрос, то есть отправку запроса ajax, который будет удерживаться сервером до тех пор, пока не поступит запрос чата.

http://en.wikipedia.org/wiki/Comet_(программирование))

person Roy Tang    schedule 30.06.2010
comment
Я уже пятый раз слышу о комете... наверное, пора мне это проверить. Спасибо. Не могли бы вы дать мне более подробную информацию о логике кометы? - person Hristo; 30.06.2010
comment
@hristo, Comet - это не конкретная технология. Это имя, данное любому методу имитации передачи данных через Интернет. Это такая же технология, как и Ajax. - person Mike Sherov; 30.06.2010
comment
Спасибо за объяснение. Я проверю это - person Hristo; 30.06.2010
comment
+1 Раньше не слышал этого термина - звучит полезно. Это может быть полезно: dashdashverbose.com/2010/ 02/ - person Jamie Wong; 30.06.2010

Я думаю, что опрос — это единственный способ заставить JavaScript внести изменения на стороне сервера.

person alex    schedule 30.06.2010