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

标签 ajax laravel long-polling server-sent-events real-time-updates

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

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

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

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

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

谢谢,

缺口

最佳答案

你有两个选择:

  • 流媒体(Websockets)
  • 长轮询

  • 您可以在此处阅读有关 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 运行在与您常用的应用程序不同的端口上,因此访问您的所有 Assets 可能有点奇怪(取决于您的系统架构)。

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

    作为旁注,除非您需要实时数据,否则我认为长轮询更容易实现和使用 laravel 等框架。

    关于ajax - 如何在 Laravel 应用程序中获取实时更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34852906/

    相关文章:

    php - 使用 Ajax 和 PHP 进行长轮询 - Apache 卡住

    php - 为什么 Recaptcha 没有从使用 XMLHttpRequest 的 PHP 中显示出来?

    asp.net - 在 jQuery 中捕获异常

    php - Laravel MySQL 在本地计算机上工作但不在远程

    php - 使用 Homestead 在 Laravel 中使用 Redis 队列

    php - MySQL错误: This command is not supported in the prepared statement protocol yet

    facebook - 如何像facebook一样发出实时通知?

    c# - 我应该如何实现 Ajax 请求的长轮询的 C# 服务器端部分?

    javascript - 如何避免多次加载 jQuery 函数?

    php - 按钮上的 AJAX 功能第一次点击后不运行 PHP