我试着用Php创建一个聊天应用程序,我使用了下面的逻辑。
1。从user-1获取输入并将其插入到表中。
2。每5秒运行一个ajax函数,查找表中的新条目并显示给user-2。
3.亦然。
这个过程太慢了,浏览器经常挂起。
实时聊天应用程序实际上是如何工作的?数据库能否在前端自动触发事件,这样我们就不必每5秒访问一次数据库了?如果是,怎么做?
谢谢。
这种策略被称为轮询,它在21世纪初为我们提供了很好的服务,但它已经过时了。
一个更好的增强是长轮询。我们请求一个网页,但服务器不会立即响应,而是等待,直到有新的信息可用。当客户端接收到新的信息时,它立即发送一个新的请求,依此类推。现在在2015年,我们有HTML5 Websockets和HTML5 SSE(服务器发送的事件),这允许客户端和服务器在数据可用时发送数据(在任何一方)。
你可以考虑在你的服务器上使用node.js (javascript)或Ratchet (PHP)
或者只是长轮询,像facebook…
你可以使用Websockets,它们在现代浏览器中是原生支持的。https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API
并使用PHP库在服务器端使用它们:http://socketo.me