Случайный чат с php / mysql / jQuery - PullRequest
0 голосов
/ 05 апреля 2011

Я делаю случайный чат, как http://www.omegle.com/ для развлечения. Вот как это происходит:

Человек входит в систему, его идентификатор вставляется в таблицу seaching_chat. Он нажимает кнопку «Поиск» и, если в searching_chat есть другие люди, мы подключаем их и удаляем информацию из таблицы seaching_chat. Если в таблице нет людей, мы используем javascript и каждые 10 секунд проверяем базу данных mysql, чтобы выяснить, заходил ли кто-нибудь в систему.

Итак, это самый эффективный способ сделать это? Любые советы, идеи?

Ответы [ 3 ]

2 голосов
/ 05 апреля 2011

WebSockets и nodejs безумно сложны и слишком полны для чего-то такого простого.Длинная тяга действительно хорошая идея (самый простой и лучший ИМО).Простой закрывающий запрос каждые 2 или 5 секунд тоже ничего не стоит, потому что всегда есть только 1 человек, ожидающий / запускающий эти запросы.2 человека -> подключиться.3 человека -> 2 чел подключены и 1 ждет.и т.д.

1 голос
/ 05 апреля 2011

Это звучит как разумное решение, но чтобы не заставить совпадающих пользователей подождать до 10 секунд, прежде чем они соединятся с другим пользователем, вы можете захотеть посмотреть на "длинную тягу", когда соединение ajax с вашим логином на стороне сервера Сценарий проверки остается открытым до тех пор, пока другой пользователь не войдет в систему ... затем ваш серверный сценарий наконец-то ответит правильной полезной нагрузкой, чтобы пользовательский javascript мог перенаправить его в чат.

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

0 голосов
/ 05 апреля 2011

Да, я думаю, что WebSockets - способ пойти с этим. Взгляните на node.js и socket.io . Socket.io предоставляет хороший способ создания WebSockets и даже поддерживает старые браузеры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...