我运行一个网站,用户可以通过浏览器(认为Facebook聊天)相互聊天。什么是处理实时交互的最佳方式? (现在我每30秒钟轮询一次,以更新在线用户和新的收到的消息,以及每秒钟在聊天页面上进行的另一次轮询,以获取新消息)。
我考虑的事情:
> HTML5 Web Sockets:没有使用它,因为它不工作在所有浏览器(只有chrome)。
> Flash Sockets:没有使用这个,因为我想最终支持移动网络。
现在,我使用短轮询,因为我不知道如何可扩展的AJAX长轮询将是。我现在从servint运行一个VPS服务器(运行apache)。我应该使用长轮询还是短轮询?我不需要绝对立即响应时间(只是“足够好”的聊天应用程序)。这是经常与几十万用户杀死我的服务器短路轮询?如何扩大这个,请帮助!
几个注意事项:
>每秒轮询是过度的。该应用程序仍然会感觉很响应,检查之间有几秒的延迟。>要保存数据库的流量和速度响应,请考虑使用内存缓存来存储未传递的消息。您仍然可以将消息保留到数据库,内存缓存只是用于查询新消息,以避免每个用户每x秒查询数据库。>在用户停止x秒后超时停止向服务器轮询。这保证有人离开一个窗口打开将不会继续产生流量。提供一个简单的“仍然有?继续聊天。链接,用于在超时前超时并警告用户,以便他们可以扩展超时。>我建议从轮询开始,而不是彗星/长轮询/套接字。轮询很容易构建和支持,并且可能在短期内很好地扩展。如果你得到很多流量,你可以抛出硬件和负载均衡器在问题规模。整个网络基于轮询 – 轮询最肯定的尺度。有一点,彗星/长轮询等替代品的复杂性是有意义的,但你需要很多的流量,在额外的开发时间/复杂性之前是合理的。