我有一个长期目标,即最终以任何方式创建聊天排序,但是现在我想要一个简单的一个带有一些Mysql和ajax调用。
为了使聊天看起来是即时的,我希望尽可能快地获得ajax请求间隔。我觉得如果它低于或低于一秒钟,它会让浏览器,用户的互联网或我的服务器陷入困境。
假设服务器没有返回任何内容,客户端使用多少带宽和CPU /内存,常数,ajax调用一秒钟?
编辑:我仍然愿意接受有关如何使用聊天服务器的建议。任何可能从x10或000webhost免费托管的东西。我被告知Henoku,但我不知道如何使用它。
编辑:感谢您提供长轮询建议,但在服务器上使用的CPU过多。
答案 0 :(得分:4)
可以使用的一种技术是使用长时间运行的ajax请求。客户端询问是否有聊天数据。服务器接收请求。如果有可用的聊天数据,则会立即返回该数据。如果没有聊天数据,它会在请求中挂起一段时间(可能是两分钟),如果在这两分钟内出现一些聊天数据,则Web请求会立即返回该数据。如果整整两分钟过去并且没有收到聊天数据,则ajax调用返回时没有数据。
然后,客户端可以立即发出另一个请求,等待另外两分钟获取一些数据。
要使这些“长”http请求正常工作,您只需确保您的基础ajax调用的超时设置超过您在服务器上设置的超时时间。
在服务器上,您需要建立一种等待数据的有效机制,可能涉及信号量或类似的东西,因为您不想在服务器内部进行轮询。
这样做,您可以在客户端获得近乎即时的响应,但每小时只能发出30个请求。
为了对笔记本电脑或移动设备的电池友好,您需要对您的应用实际未被使用(浏览器未显示,而不是当前标签等等)敏感并停止请求那段时间。
至于你的其他问题,重复的ajax调用(只要它们间隔至少一些时间间隔)就不会在CPU或内存方面使用太多。如果他们让计算机无法进入空闲模式,他们可能会使用电池。