没有Websockets的即时消息系统的最佳方式[关闭]
Posted
技术标签:
【中文标题】没有Websockets的即时消息系统的最佳方式[关闭]【英文标题】:Best way for instant messaging system without Websockets [closed] 【发布时间】:2015-07-08 01:40:22 【问题描述】:我目前正在从主机租用一个网络服务器。他们不允许 webrtc 或 node.js 或类似的东西。
我有一个使用 php/SQL/Ajax 的消息传递系统(当用户查看消息线程时,它每 60 秒获取一次新数据)但这似乎不是即时的,而且如果很多用户都在。
所以,我的问题是:有什么方法可以让我的用户实时更新数据,而不必不断地请求新数据,也不必使用 websockets?
我也想用通知和 cmets 来实现这一点,所以有很多 ajax 脚本每 x 秒请求一次数据似乎不是一个好主意。
【问题讨论】:
嗨,我认为您仍然可以使用 html5 网络工作者使用长轮询,不确定是否所有浏览器都支持。 【参考方案1】:就个人而言,我建议您的问题的最佳解决方案是使用websocket
。这是迄今为止最有效的方法。关于这一点:
他们不允许使用 webrtc 或 node.js 或类似的东西。
您可以找到一些可以让您运行 websocket 服务器的主机。例如https://www.digitalocean.com,您可以在其中设置/安装自己的主机套接字服务器。
我有一个使用 PHP/SQL/Ajax 的消息传递系统(当用户查看消息线程时,它每 60 秒获取一次新数据)但这似乎不是即时的,而且如果很多用户都在使用。
我认为您目前使用的这种方法是AJAX Polling
,您可以在每个时间间隔持续请求数据库中的新更新。这对于最少的更新是可以的,但我个人不建议使用这种方法。从长远来看,每个时间间隔的每个请求都会影响您的应用程序速度和性能。这就是为什么你是对的:
我也想通过通知和 cmets 来实现这一点,因此让大量 ajax 脚本每 x 秒请求一次数据似乎不是一个好主意。
还有这个:
所以,我的问题是:有什么方法可以让我的用户实时更新数据,而不必不断地请求新数据,也不必使用 websockets?
是的,有一种方法可以使用SSE (Server-Sent Events)。查看来自w3fools :D 的示例。
但如果您再次考虑使用 websockets,您可以尝试使用 PHP 的 websocket:Ratchet。
也可以看看这个:Ways to make request/get realtime updates for a web application.
【讨论】:
以上是关于没有Websockets的即时消息系统的最佳方式[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
将 websockets 与 PHP 和 MySQL 脚本一起使用的最佳方式是啥? [关闭]