如何通过PHP JS(MySQL?)(AJAX?)进行快速,轻量化的经济在线聊天

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

但又如何呢?套接字?但是怎么

您似乎对服务器负载有问题,所以我将比较相关技术.

Ajax投票:
这是最直接的.您每5秒钟进行一次setTimeout循环,以便检查新的聊天消息,或者设置一个iframe来重新加载.当您发布消息时,您还会返回新消息,并且事情不应该失灵.这种方法最大的缺点是您不太可能以与发布消息的频率相对应的频率进行轮询.要么你要轮询得太快,而且你会收到很多额外的请求,否则你会轮询得太慢,你一次会收到大量的消息,而不是以实时的方式让他们.这是迄今为止最简单的方法.

HTTP推送
这是服务器应该告诉客户端有新消息的想法,而不是客户端不断地打扰服务器询问是否还有新消息.想象一下,父母驾驶和孩子问“我们还在吗?”,你可以让父母告诉孩子,当他们到达那里.

有两种方法来假冒它,并为真实而做.您提到的WebSockets实际上是在客户端和服务器之间创建一个流并实时发送数据.这是非常棒的,对于具有浏览器的10个用户中的4个,可以做到这一点,他们会非常好奇.别人都会有破碎的页面.抱歉.也许在几年.

你也可以用长时间轮询的方法来伪造技术.这个想法是,您要求服务器是否有新消息,并且服务器在新消息出现或达到一些预设限制(30秒左右)之前不会应答.这使得将请求数量降至最低,同时使用已知的Web技术,因此大多数浏览器都可以使用它.你会有一个很高的连接并发性,但他们真的没有做任何事情,所以它应该有太高的服务器成本.

以前我已经使用了所有这些,但是最后还是长时间轮询自己.您可以在这里找到更多关于如何实际执行此操作:How do I implement basic “Long Polling”?

相关文章

Hessian开源的远程通讯,采用二进制 RPC的协议,基于 HTTP 传输。可以实现PHP调用Java,Python,C#等多语...
初识Mongodb的一些总结,在Mac Os X下真实搭建mongodb环境,以及分享个Mongodb管理工具,学习期间一些总结...
边看边操作,这样才能记得牢,实践是检验真理的唯一标准.光看不练假把式,光练不看傻把式,边看边练真把式....
在php中,结果输出一共有两种方式:echo和print,下面将对两种方式做一个比较。 echo与print的区别: (...
在安装好wampServer后,一直没有使用phpMyAdmin,今天用了一下,phpMyAdmin显示错误:The mbstring exte...
变量是用于存储数据的容器,与代数相似,可以给变量赋予某个确定的值(例如:$x=3)或者是赋予其它的变...