1

我正在构建一个Web应用程序,用户可以在其中注册,添加他们想要关注的tweet提要,并且他们的流将随着他们正在追踪的提要接收新帖而更新。如何在Laravel应用程序中获得实时更新

我去平台是Laravel。但是,我想不出实现网站实时更新方面的最佳方式。

我会使用一个定期调用的AJAX函数(例如每30秒),但随着用户数量的增加,这种方法也存在缺陷。

我已经研究过HTML5服务器端事件,但不幸的是IE不支持。

在Laravel应用程序中实现此功能的最佳方式是什么?

感谢,

尼克

+0

我会去的node.js和服务器到客户端的推送.. – opHASnoNAME

+0

感谢您的评论。我正在研究使用Laravel的Node。理论上我理解如何使用Node将消息(本例中为推文)推送到laravel模板。我希望用户能够在Laravel应用程序中进行管理,因此他们将在这里选择他们想要遵循的Twitter提要。我该如何着手让节点知道哪些用户对哪些供稿感兴趣,并使用他们选择的推文更新他们的页面(而不是使用来自节点的相同数据全局更新每个人)? – nvaughan84

+0

只是想到:建立一个数据库,与node.js应用程序共享它。嗯听起来像一个有趣的项目为我的休息时间;) – opHASnoNAME

回答

3

你有两个选择:

  1. 流式传输(Websockets)
  2. 长查询

你可以阅读更多有关的WebSockets这里: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API

而且你可以了解更多关于长轮询这里: https://www.quora.com/Why-would-HTTP-long-polling-be-used-instead-of-HTTP-Streaming-to-achieve-real-time-push-notifications

简而言之:
的WebSockets不同的端口比你平常的应用程序上运行,因此访问所有资产可能有点奇怪(取决于您的系统架构)。

长轮询是一个非常长的http请求,可以持续长达几分钟,而不是每30秒发送一次请求,每次服务器返回响应时都会发送一次请求。这意味着如果服务器花了5分钟返回响应,则每5分钟只发送一次请求。 (例如,没有任何理由提醒客户端没有任何变化,所以你可以睡觉(30),然后再试一次)

作为一个方面说明,除非你需要实时数据,否则我认为长时间轮询很多更容易实现和使用框架,如laravel。

+0

感谢您的回复。长时间轮询会对服务器产生任何影响。如果网站上一次有1000个用户,这会给Apache带来什么问题? – nvaughan84

+0

嘿 - 当时对于Facebook来说已经够好了(我认为他们现在变成了别的东西,取决于你想要扩展的规模)。 https://www.facebook.com/note.php?note_id=14218138919 – Patrick

+1

另一个可能有用的后 - http://serverfault.com/questions/562701/how-to-scale-up-a-web-server - 支持长轮询 – Patrick

相关问题