如何通过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”?

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...