Синхронизировать ответ Ajax - PullRequest
1 голос
/ 04 января 2011

Я нахожусь в среде codeigniter и хочу сделать что-то подобное.Существует чат с одним O-wner и несколькими C-lients.Вот что я пытаюсь написать

1) С входит в комнату.

2) когда все готово, все C нажимают на «готовую» ссылку, которая отправляет запрос ajax

3) C ждет, пока все C будут готовы, затем сигнализирует обо всем клиенте и предыдущемajax-ответы отправляются

4) когда C получает ответ (который должен быть в одинаковые моменты для всех клиентов), они начинают делать то, что им нужно делать:)

Есть ли простой способ отслеживать всех подключенных клиентов, чтобы я мог одновременно сигнализировать обо всех них?

Пока я застрял на шаге 3. У меня есть такой код

$.ajax({ 
url: 'myurl.php',
success: function() { doStuff(); }
});

, и в моем гипотетическом файле myurl.php у меня есть

while ($this -> MyModel -> waitingQueue) {
sleep(1) }
return "ok";

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

Спасибо всем!

Ответы [ 2 ]

1 голос
/ 04 января 2011

Вы можете попытаться имитировать синхронизацию с помощью регулярной проверки ajax со всех клиентов на сервере.Проверьте функцию jQuery.queue, запустите опрос очереди с помощью SetInterval, а затем нажмите функцию, связывающуюся с проверками в этой очереди (и в этих функциях очистите очередь).

Если вы хотите пойти еще дальше, вам следуетвзгляните на 'Comet' и постоянные HTTP-соединения, пытаясь включить PUSH-поведение в HTTP, но это будет непросто :-) По крайней мере, если вы получите полный контроль над сетью, сервером, людьми, подключающимися к вашему приложению (как в интранете) это будет проще.

Или вы можете проверить документацию по закрытому проекту Google Wave.

0 голосов
/ 04 января 2011

Я рекомендую использовать setInterval () в JavaScript.так что вы можете постоянно проверять состояние сервера.

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

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

... и не забудьте clearInterval ()

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