use*_*801 10 javascript php ajax performance chat
用js写在线聊天的最佳方式是什么?如果我每隔5秒使用AJAX并更新有关用户和消息的信息 - HTTP请求和答案将产生大量流量,请求将导致高服务器负载.
但另一个怎么样?套接字?但是怎么..
您似乎遇到服务器负载问题,因此我将比较相关技术.
Ajax民意调查: 这是最直截了当的.你经常每5秒左右做一次setTimeout循环来检查新的聊天消息,或者设置一个iframe来重新加载.当您发布消息时,您还会返回新消息,并且事情不会出现故障.此方法的最大缺点是您不太可能使用与发布消息的频率相对应的频率进行轮询.要么你的投票太快了,你要做很多额外的请求,要么投票太慢,你会一次得到大量的消息,而不是以实时的方式获取它们.这是迄今为止最简单的方法.
HTTP推送 这是一个想法,服务器应该告诉客户端何时有新消息,而不是客户端不断打扰服务器询问是否还有新的消息.想象一下,父母驾驶和孩子问"我们在那里吗?",你可以让父母告诉孩子他们到达那里.
有两种方法可以伪造这个并真实地做到这一点.您提到的WebSockets实际上是在客户端和服务器之间创建流并实时发送数据.这很棒,对于拥有可以执行此操作的浏览器的10个用户中的4个,他们会非常兴奋.其他人都会有一个破页.抱歉.也许在几年内.
你也可以通过长轮询等方式伪造技术.我们的想法是,您询问服务器是否有新消息,并且服务器在新消息出现或达到某个预设限制(约30秒左右)之前不会应答.这样可以在使用已知的Web技术时将请求数量保持在最低水平,因此大多数浏览器都可以使用它.您将具有高连接并发性,但它们实际上没有做任何事情,因此它应该具有太高的服务器成本.
我之前已经使用过所有这些,但结果我自己进行了长时间的轮询.您可以在此处找到有关如何实际执行此操作的更多信息:如何实施基本的"长轮询"?
| 归档时间: |
|
| 查看次数: |
4386 次 |
| 最近记录: |