如何在 Laravel 应用程序中获取实时更新

nva*_*n84 5 ajax long-polling server-sent-events laravel real-time-updates

我正在构建一个 Web 应用程序,用户可以在其中注册、添加他们想要关注的 twitter 提要,并且他们的信息流将随着他们关注的提要收到新帖子而更新。

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

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

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

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

谢谢,

缺口

Pat*_*ick 5

您有两个选择:

  1. 流媒体(网络套接字)
  2. 长轮询

您可以在这里阅读有关 websocket 的更多信息: 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-推送通知

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

长轮询是一个非常长的http请求,可以持续长达几分钟,而不是每30秒发送一次请求,而是每次服务器返回响应时发送一次。这意味着,如果服务器花了 5 分钟才返回响应,则您每 5 分钟仅发送一次请求。(例如,没有理由提醒客户端没有任何变化,因此您可以 sleep(30) 并重试)

顺便说一句,除非您需要实时数据,否则我认为长轮询更容易通过 Laravel 等框架来实现和使用。


Imt*_*bel 3

你可以使用 Pusher 或 Node.js 进行实时处理。在 laracast 中,你会找到一个视频,说明如何做到这一点https://laracasts.com/series/intermediate-laravel/episodes/4