没有 Websockets 的即时消息系统的最佳方式

Axi*_*iom 6 php mysql ajax

我有一个网络服务器,目前正在从主机租用。他们不允许 webrtc 或 node.js 或类似的东西。

我有一个使用 PHP/SQL/Ajax 的消息传递系统(当用户查看消息线程时,它每 60 秒获取一次新数据)但这似乎不是即时的,而且如果有很多用户,它似乎对服务器来说不是很方便在...上。

所以,我的问题是:有什么方法可以实时更新我的​​用户数据,而不必不断请求新数据,也不必使用 websockets?

我也想通过通知和评论来实现这一点,所以有很多 ajax 脚本每 x 秒请求一次数据似乎不是一个好主意。

Vai*_*y07 5

就个人而言,我建议您的问题的最佳解决方案是使用 websocket. 这是目前最有效的方法。关于这一点:

他们不允许 webrtc 或 node.js 或类似的东西。

您可以找到一些可以让您运行 websocket 服务器的主机。例如https://www.digitalocean.com,您可以在其中设置/安装自己的套接字服务器。

我有一个使用 PHP/SQL/Ajax 的消息传递系统(当用户查看消息线程时,它每 60 秒获取一次新数据)但这似乎不是即时的,而且如果有很多用户,它似乎对服务器来说不是很方便在...上。

我认为您目前使用的这种方法是AJAX Polling您在每个时间间隔内持续请求数据库中的新更新。这对于最小更新来说是可以的,但我个人不建议使用这种方法。从长远来看,每个时间间隔的每个请求都会影响您的应用程序速度和性能。这就是为什么你是正确的:

我也想通过通知和评论来实现这一点,所以有很多 ajax 脚本每 x 秒请求一次数据似乎不是一个好主意。

和这个:

所以,我的问题是:有什么方法可以实时更新我的​​用户数据,而不必不断请求新数据,也不必使用 websockets?

是的,有一种使用SSE (Server-Sent Events) 的方法。检查w3fools的示例:D

但以防万一你再次考虑 websockets,你可以尝试 websocket for PHP: Ratchet

另请查看:为 Web 应用程序发出请求/获取实时更新的方法。