Php 如何在不使用ajax的情况下创建弹出式聊天应用程序

Php 如何在不使用ajax的情况下创建弹出式聊天应用程序,php,javascript,ajax,Php,Javascript,Ajax,我制作了一个约会网站,在那里我使用了一对一的聊天应用程序,比如facebook。当一个用户向另一个用户发送任何消息时,它会显示在他们弹出的聊天框中,但我使用ajax完成了这项工作。我使用javascript setInterval函数在每个时间间隔中运行它。但我认为这个过程不是一个优化的过程。我不想每次都向服务器发出不必要的请求,而是只在该用户收到新消息时才会触发。有没有其他的方法可以做到这一点,或者像facebook、gmail这样的大型网站使用的其他协议 您可以使用,但这需要服务器实现和支持

我制作了一个约会网站,在那里我使用了一对一的聊天应用程序,比如facebook。当一个用户向另一个用户发送任何消息时,它会显示在他们弹出的聊天框中,但我使用ajax完成了这项工作。我使用javascript setInterval函数在每个时间间隔中运行它。但我认为这个过程不是一个优化的过程。我不想每次都向服务器发出不必要的请求,而是只在该用户收到新消息时才会触发。有没有其他的方法可以做到这一点,或者像facebook、gmail这样的大型网站使用的其他协议

您可以使用,但这需要服务器实现和支持它的web浏览器


另一种技术是使用,但同样,这需要在客户机和服务器上进行工作。优点是这是一种跨浏览器兼容的技术。

我同意Josh的观点,WebSocket值得研究,但是如果您无法访问服务器,您可以使用类似的方式作为后端


读入。这就是facebook所使用的。基本上,您的客户机只进行一次Ajax调用,在有数据推送到它之前不会返回任何内容。我很确定它需要一些定制的服务器配置,所以如果你在共享主机上开发,它不会削减它。如果效率是你想要的,那么长时间的投票是正确的,尽管是更复杂的方式

服务器发送事件似乎是另一种选择

聊天示例:
文档:

谢谢你,Josh。我以前没有使用过,让我试试并实现它。通常的方法是将服务器设置为保持连接打开,直到它有数据要发送。这就是gmail所做的(或者至少过去是这样做的;不确定它是否仍然这样做)。其基本思想是:发出AJAX请求,如果数据可用,服务器立即发送数据,或者尽可能长时间地打开请求。当客户机返回数据时,它会立即发送一个新的请求。