缩放聊天应用程序 - 短轮询与长轮询(AJAX,PHP) [英] Scaling a chat app - short polling vs. long polling (AJAX, PHP)

查看:319
本文介绍了缩放聊天应用程序 - 短轮询与长轮询(AJAX,PHP)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我运行一个网站,用户可以互相通过浏览器聊天(认为Facebook聊天)。什么是处理现场互动的最佳方式? (现在我有一个民意调查每30秒要更新的在线用户和新传入的消息,而另一个民调每一秒,以获得新的消息会在聊天页面。)

I run a website where users can chat with each other through the browser (think Facebook chat). What is the best way to handle the live interaction? (Right now I have a poll going every 30 seconds to update online users and new incoming messages, and another poll going on chat pages every second to get new messages.)

东西:

  • 在HTML5的Web套接字:没有使用这个,因为它不能在所有的浏览器(仅限于镀铬)工作
  • 闪光套接字:没有使用这个,因为我想最终支持移动web

现在,我正在使用短投票,因为我不知道如何可扩展AJAX长轮询会。我正在从SERVINT一个VPS服务器,现在(运行的Apache)。我应该使用长轮询或短轮询?我不需要绝对立即响应时间(只是一个聊天应用足够好)。短轮询这往往有几十万用户会杀了我的服务器?如何调整这一点,请大家帮忙!

Right now, I am using short polling because I don't know how scalable AJAX long polling would be. I'm running a VPS server from servint right now (running apache). Should I use long polling or short polling? I don't need absolutely immediate response times (just "good enough" for a chat app). Is short polling this often with a few hundred-thousand users going to kill my server? How do I scale this, please help!

推荐答案

的几个注意事项:

  • 在轮询每一秒都是矫枉过正。该应用程序仍然会感觉到非常敏感与检查之间延迟几秒钟。
  • 要保存数据库的流量和速度的反应,考虑内存缓存使用存储未传递的消息。你可能仍然存在信息到数据库中,在内存中缓存只会被用于新邮件每个用户避免查询数据库每x秒查询。
  • 闲置x秒后
  • 在超时用户的聊天停止轮询服务器。这保证别人留下一个窗口打开不会继续产生流量。提供一个简单的还在吗?继续聊天。链接的超时,警告用户在超时前,使他们能够延长暂停会议。
  • 我会建议与投票,而不是彗星/长轮询/插座开始了。轮询是简单的构建和支持,并可能扩展就好在短期内。如果你得到大量的流量,你可以在这个问题扩展扔硬件和负载平衡器。整个网络是基于轮询 - 轮询肯定缩放。有一个点,类似彗星/长轮询/等替代品的复杂性是有意义的,但你以前额外的开发时间/复杂性需要大量的流量是有道理的。

这篇关于缩放聊天应用程序 - 短轮询与长轮询(AJAX,PHP)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆