【问题标题】:Laravel: Making a Real Time Application using AngularLaravel:使用 Angular 制作实时应用程序
【发布时间】:2014-09-10 05:13:03
【问题描述】:

我开始使用 angular,并且对双向数据绑定功能和它的 $http 方法很着迷,它可以让我将更改保存到我的 mysql 数据库中,而无需刷新页面。

我目前着迷的另一件事是使用 firebase 跨多个客户端的实时功能。当数据库收到任何更改时,所有客户端都会实时更新。我可能想使用 firebase,但我必须完全放弃 Laravel 和 MySql 作为持久层,我想暂时保留它,因为我的应用程序已经在 Laravel 中运行,只是不是实时的。

我将如何使用 MySQL 和 Angular 在 Laravel 中创建一个实时应用程序,它可以更新每个客户端,而不刷新视图?

如果我没记错的话,Pusher 和 PubNub 正在使用 websockets 提供与服务器的必要开放连接,所以当服务器有东西要共享时,angular 现在会渲染它。

由于我想使用 Laravel 和 MySQL 作为持久层,我不确定最好的方法是什么。我什至不确定我是否正确理解了上面写的所有内容,因为我是角度和实时应用程序的新手。

接下来的必要步骤是什么,将一些实时功能引入 PHP/MySQL 应用程序?

【问题讨论】:

    标签: angularjs laravel firebase pusher pubnub


    【解决方案1】:

    您的问题的解决方案是:

    1º - 打开与 websocket-server 的 websocket 连接并订阅一个频道,之后使用 ajax 将数据发送到您的服务 tutorial angular pusher

    2º - 在服务器端,您获取数据,保存到您的数据库并将“PUBLISH”发送到相应的通道到 websocket 服务器 lib useful for this

    3º - 通过订阅实时获取数据

    Pusher.subscribe('channel', 'event', function (item) {
        // code
    });
    

    【讨论】:

    • 您是否会说实时应用程序可以通过以下三种方式实现:1. Node.js + Socket.io // 或 // 2. AngularJS + Firebase // 或 // 3. Laravel + Angular + Pusher/PubNub
    • 当然,如果您想控制客户端将发送的数据,您可以使用第 3 种方式(适用于大型应用程序)和第 1 种方式(适用于小型应用程序),如果您不关心发送的数据并希望保留数据,请使用第二种方式。我更喜欢第三个:]
    • @Claudivan 您还可以将第二个选项用于大型应用程序。 laravel + Pusher/PubSub 的性能非常低。 NodeJS + redis 性能比 laravel 高
    【解决方案2】:

    我最近遇到了类似的问题,最后我最终使用了 Redis 发布/订阅Redis。您可以将数据存储在频道中,然后订阅任何更改。当某些事情发生变化时,您可以将其发送到 Pusher,然后将其发送给客户端。

    我还建议考虑 Node.js 和 Socket.io,因为你可以在没有第三方服务的情况下获得非常好的性能,即使你没有使用 node 的经验,你也可以在Socket.IO如何编写上找到很好的例子一个应用程序。

    对于 Redis,有一个很好的 PHP 库,称为 Predis,还有 Redis Node 客户端,因此您可以将它们混合在一起。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-24
      • 1970-01-01
      • 2015-11-30
      • 2020-07-14
      • 1970-01-01
      • 1970-01-01
      • 2019-09-26
      • 2019-11-14
      相关资源
      最近更新 更多