我在codeigniter环境中,我想做这样的事情。 有一个聊天室,有一个O-Wner和一些C-lients。 这就是我想写的东西
1)C加入房间。
2)准备好后,所有Cs点击发送ajax请求的“就绪”链接
3)C等待所有C准备好,然后发出信号通知所有客户端并发送先前的ajax响应
4)当C接收到响应时(应该在所有客户端的相同时刻),他们开始做他们必须做的事情:)
是否有一种简单的方法可以跟踪所有连接的客户端,以便我可以同时发出信号?
现在我陷入了第3步。我有一个像这样的代码
$.ajax({
url: 'myurl.php',
success: function() { doStuff(); }
});
在我的hypotethic文件myurl.php中我有
while ($this -> MyModel -> waitingQueue) {
sleep(1) }
return "ok";
我想这不是一个好方法,因为当我在模型中更改变量“waitingQueue”时,我无法控制所有客户端是否在同一个实例中收到响应。
全部谢谢!
答案 0 :(得分:1)
您可以尝试使用服务器上所有客户端的常规ajax检查来模拟同步。检查jQuery.queue函数,使用SetInterval启动队列轮询,然后推送包含该队列中的检查的函数(并在这些函数中刷新队列)。
如果你想更进一步,你应该看看'Comet'和持久的HTTP连接,试图将PUSH行为放在HTTP中,但这并不简单:-)至少如果你得到完整的控制您的网络,服务器,连接到您的应用程序的人(如内联网),这将更加简单。
或者您可以查看现已关闭的项目google wave上的文档。
答案 1 :(得分:0)
我建议在javascript中使用setInterval()。所以你可以连续检查服务器状态。
我认为你不能简单地同步你的客户。并且他们不会同时从服务器得到答案。
如果您同步所有客户端的监视并安排集合时间点,当客户端shell触发事件时,您可能会有很好的机会。
...不要忘记clearInterval()