gpt4 book ai didi

php - 如何使用 PHP + JS +(MySQL?)+(AJAX?)进行快速、轻量级、经济的在线聊天

转载 作者:可可西里 更新时间:2023-10-31 22:46:37 25 4
gpt4 key购买 nike

用js写在线聊天什么方式最好?如果我使用 AJAX 并每 5 秒更新一次有关用户和消息的信息 - HTTP 请求和答案将产生大量流量,而请求将产生高服务器负载。

但又如何呢? socket ?但是如何..

最佳答案

你好像是服务器负载有问题,我比较一下相关技术。

Ajax 轮询:这是最直接的。您每 5 秒左右执行一次 setTimeout 循环以检查新的聊天消息,或者您将 iframe 设置为重新加载。当您发布一条消息时,您还会返回新消息,并且事情不应该乱序。这种方法的最大缺点是您不太可能以与发布消息的频率相对应的频率进行轮询。要么你轮询太快,你会发出很多额外的请求,要么你轮询太慢,你会一次获得大量消息,而不是以实时方式获得它们。不过,这是迄今为止最简单的方法。

HTTP 推送这是服务器应该在有新消息时告诉客户端的想法,而不是客户端不断地打扰服务器询问是否有新消息。想象一下 parent 开车, child 问“我们到了吗?”,你可以让 parent 在 child 到达那里时告诉他们。

有几种方法可以伪造和真实地做到这一点。您提到的 WebSockets 实际上是在客户端和服务器之间创建一个流并实时发送数据。这太棒了,对于拥有可以执行此操作的浏览器的 10 个用户中的 4 个,他们会非常兴奋。其他人都会有一个破页。对不起。也许几年后。

您还可以使用long-polling 等方式伪造推送技术。这个想法是您询问服务器是否有任何新消息,并且在出现新消息或达到某个预设限制(30 秒左右)之前服务器不会回答。这将请求数量保持在最低限度,同时使用已知的网络技术,因此大多数浏览器都可以使用它。您将拥有高连接并发性,但它们实际上什么都不做,因此服务器成本应该过高。

我以前使用过所有这些,但最终还是自己进行了长轮询。您可以在此处找到有关实际操作方法的更多信息:How do I implement basic "Long Polling"?

关于php - 如何使用 PHP + JS +(MySQL?)+(AJAX?)进行快速、轻量级、经济的在线聊天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4370591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com