聊天应用程序如何在没有重复 ajax 调用的情况下工作?

How chat applications work without repeated ajax call?

我尝试在 Php 中创建一个聊天应用程序,我使用了以下逻辑。

1.Get 从 user-1 输入并将其插入 table.

2.Run 每 5 秒执行一次 ajax 函数以在 table 中查找新条目并显示给用户 2。

3.vice-相反。

这个程序实在是太慢了,浏览器经常死机。

实时聊天应用程序的实际工作原理是什么?数据库能不能在前端自动触发一个事件,这样我们就不用每隔5秒就去打一次数据库?如果有,是怎么做到的?

谢谢。

或者只是长轮询,比如 facebook...

您可以使用 Websockets,现代浏览器原生支持它们。 https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API

并使用 PHP 库在服务器端使用它们:http://socketo.me

该策略称为 轮询,它在 2000 年代初为我们提供了很好的服务,但它已经过时了。

更好的增强是长轮询。我们请求一个网页,但服务器不会立即响应,而是等到有可用的新信息。客户端收到新信息后,立即发送新请求等。

2015 年,我们有 HTML5 WebsocketsHTML5 SSE(服务器发送事件),这允许客户端和服务器在数据(任何一方)可用时发送数据。

您可以考虑在您的服务器上使用 node.js (javascript) or Ratchet (PHP)。