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


How chat applications work without repeated ajax call?

我试着用Php创建一个聊天应用程序,我使用了下面的逻辑。

1。从user-1获取输入并将其插入到表中。

2。每5秒运行一个ajax函数,查找表中的新条目并显示给user-2。

3.亦然。

这个过程太慢了,浏览器经常挂起。

实时聊天应用程序实际上是如何工作的?数据库能否在前端自动触发事件,这样我们就不必每5秒访问一次数据库了?如果是,怎么做?

谢谢。

这种策略被称为轮询,它在21世纪初为我们提供了很好的服务,但它已经过时了。

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

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

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

或者只是长轮询,像facebook…

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

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