Gmail 聊天如何在没有长轮询的情况下向用户发送数据
How does gmail chat send data to users without long-polling?
我一直在摆弄聊天程序一段时间了。
使用 AJAX 轮询是成功的,但它每秒向服务器发送一个请求,这对我来说似乎太昂贵了,更不用说现在每 1000 毫秒都很慢。
长期投票没有成功。我发现我可以在我的服务器(Apache)上执行长轮询请求,但是如果我正在运行长轮询请求,则网页的其余部分将呈现为"死"。我无法单击文本框或键入什么。
我现在知道这是因为 Apache 对长轮询请求使用多个线程,因此与其他服务器类型不同,会消耗大量资源。
我的问题:
1.如何在没有长轮询的情况下创建相同的"即时消息功能"(或者如何在 Apache 上功能上成功地进行长轮询?我只需要
When (someone sends a message and thus a file on server changes) {send data to all users;},
应该很容易吧?
我注意到Facebook为客户端(在Firebug中)进行了长时间轮询,但是Gmail聊天显然没有,但具有相同的功能?!
2.Gmail聊天是如何做到的?
我已经阅读了关于Comet和这篇文章的wiki,并观看了一个内容丰富的视频,演讲者说这可以用PHP/JS完成,并且对IDEA有很好的理解,我只想要CODE。
我找到了一个长轮询的PHP和Apache可行的解决方案。这是一种魅力。
http://www.zeitoun.net/articles/comet_and_php/start
我所要做的就是在后端set_time_limit(0);
.php一切都是应该的。
相关文章:
- 在不使用javascript的情况下,可以在表单字段中设置文本占位符(以提示最终用户插入特定格式)
- 如何创建只允许用户在选中前一个复选框的情况下选择复选框的复选框验证
- 如何在不更改Javascript页面的情况下访问用户输入的电子邮件
- 在未经许可的情况下查看用户喜欢的facebook页面
- Gmail 聊天如何在没有长轮询的情况下向用户发送数据
- 如何在没有JQuery的情况下,通过对服务器的基本ajax调用,根据浏览器上的用户活动保持服务器会话活动
- 如何在不创建用户帐户的情况下,允许每人(电脑/手机)在网站上的1篇帖子上只投1票
- 允许用户在不刷新页面的情况下留下多条评论
- 在没有javascript的情况下呈现网页之前,用户如何验证和定制页面
- 如何在不重定向用户的情况下更改地址栏URL(不使用历史API?)
- 如何在不使用地理位置的情况下获得用户所在城市
- 谷歌应用程序脚本:如何在没有用户交互的情况下调用绑定到处理程序的函数
- 如何在加载时仅在用户自己不滚动的情况下滚动页面
- 如何在没有用户确认的情况下在iPhone的浏览器中启动音频
- localStorage为用户注册如何在不丢失数据的情况下重定向
- 是否可以在没有用户提交表单的情况下保存表单数据
- 如何在没有服务器端的情况下监视用户操作
- 如何在没有用户批准的情况下使用 JS 从 Web 浏览器运行和安装 EXE 文件
- 流星:在不注销的情况下更改用户密码
- 如何在用户使用护照登录的情况下测试帆.js控制器.js