在共享主机服务器发送事件(SSE)或长轮询上实施实时通知的最佳方法是什么?
我观看了一段视频,其中说SSE不适合共享托管,Apache服务器,并且不适合PHP和MySql。
我只想知道哪种技术更适合长轮询或SSE在共享服务器上进行实时通知,我在godaddy.com上有我的服务器
请提供解释推荐技术的良好链接。
答案 0 :(得分:6)
每个SSE连接都保持打开专用套接字。如果您使用的是Apache和PHP,那么内存中也会有一个实例。他们坐在那里,占用记忆,即使你从未向客户发送过任何数据。
共享托管的经济学依赖于大多数用户在大多数时间没有加载服务器的想法。如果你开始在内存所有中开始持有apache进程,你的ISP将绕过这些进程。例如,BlueHost似乎有一个脚本可以自动搜索并破坏长时间运行的进程;我想象GoDaddy也一样。
除此之外,ISP可能会在您的网站前放置一个缓存代理服务器,这会干扰SSE和长时间轮询。 (在这种情况下,您可以向代理发送特殊标头,告诉它不要。)
所以,没有技术原因SSE和长轮询不能用于共享主机,但实际上你的ISP会试图阻止你。
对于你问题的其他部分,SSE和长轮询基本相同; SSE为您提供了内置的JavaScript API,并且效率更高。当用户的浏览器支持SSE时使用SSE,否则编写自己的长轮询例程。
如果您与共享主机绑定,我建议使用短轮询(即每15或30秒进行一次AJAX调用)。你增加了一点延迟,但节省了一点钱。