聊天应用程序如何在没有重复 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 Websockets 和 HTML5 SSE(服务器发送事件),这允许客户端和服务器在数据(任何一方)可用时发送数据。
我尝试在 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 Websockets 和 HTML5 SSE(服务器发送事件),这允许客户端和服务器在数据(任何一方)可用时发送数据。