首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在线聊天- Ajax投票或反向Ajax

在线聊天- Ajax投票或反向Ajax
EN

Stack Overflow用户
提问于 2010-06-30 22:20:32
回答 2查看 1.3K关注 0票数 3

经过一整天的搜索,我想谈谈网上聊天的最佳解决方案。

我所知道的是:

Ajax轮询是一种旧的、带带消耗的、不具有可伸缩性的方法。它每隔X秒向服务器请求新数据。这意味着每X秒就有一个数据库查询* number_of_connected_users。

Reverse及其应用程序之一( comet )需要定制的web服务器或专用的comet服务器,该服务器可以处理number_of_connected_users数量的长期http连接。

我的实际服务器是:1 Xeon CPU,1 GB RAM和1GB/s带宽。服务器是一个虚拟机(因此具有高度的可伸缩性)。

我需要一个解决方案,可以扩大与服务器和未来不断增长的用户基础。

我的怀疑是:

  • ajax轮询方法会对我的带宽使用产生多大影响?
  • 我可以以哪种方式优化ajax轮询,以便只在必要时进行db查询?
  • 彗星服务器能在web服务器(Apache)的同一台机器上运行吗?
  • 用彗星的方式,我仍然需要一个间隔来执行数据库上的查询,然后发送响应,那么实时在哪里呢?
  • 对于我真正的服务器,彗星的方式能起作用吗?

提前谢谢你。

EN

回答 2

Stack Overflow用户

发布于 2010-06-30 22:32:06

你不应该使用轮询,如果你能逃脱它。它会阻塞服务器和客户端的资源。服务器必须使用轮询发出更多的数据库请求,并进行更多的检查,以查看数据是否已更改。

ajax轮询方法还会生成更多不必要的请求。通过轮询,您可以使用内存和CPU。彗星(如果做得好的话)只使用内存。

comet服务器可能无法在Apache下运行。Apache似乎不是为长时间运行的请求设计的。我建议您使用ruby (使用EventMachine) 一个例子、Python (使用Twisted)或C.

我不明白为什么您需要有一个间隔来执行数据库查询。当您进行更改时,您可以告诉您的comet服务器将更改通知必要的用户。

票数 1
EN

Stack Overflow用户

发布于 2010-07-01 09:51:00

我正在用PHP写我的网站。

所以,我需要运行一台服务器(比如扭)并用python编写我的聊天应用程序?这个应用程序应该处理传入的ajax请求,并将新数据推送到客户端。

如果我理解得很好,这种方法不需要数据库,对吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3153844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档