加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

HOW TO:使用Iron.io MQ,Push Queues和AJAX在Laravel 4中获取实

发布时间:2020-12-16 02:54:50 所属栏目:百科 来源:网络整理
导读:我在我的Laravel 4应用程序中集成了ironMQ推送队列,以实现更长时间的运行.我有一些视图执行可能需要30秒的$.get.我希望看到其他人正在做什么,以便在完成ironMQ推送回端点时轻松收到通知. 我将使用推送队列进行的一个示例: public function getCompletedTask
我在我的Laravel 4应用程序中集成了ironMQ推送队列,以实现更长时间的运行.我有一些视图执行可能需要30秒的$.get.我希望看到其他人正在做什么,以便在完成ironMQ推送回端点时轻松收到通知.

我将使用推送队列进行的一个示例:

public function getCompletedTasks() {

    $user = User::find(Auth::user()->id);

    Queue::push(function($job) use ($user) {
        $recent = new Recent;
        $tasks  = $recent->getCompletedTasks($user);
        // append data from $tasks to DOM
        // here's where I want to receive my notification
    });     
}

在这里,我只是从API中获取与用户数据匹配的任务.

我知道我可以将响应数据存储到数据库并使用AJAX长轮询来不断检查数据,但对于大多数情况我似乎需要做太多工作.我对websockets知之甚少.你们在这些情况下做了什么类型的事情?如果你有任何非常有用的例子.谢谢.

更新:使用Pusher解决了这个问题.看我的回答.

解决方法

我能够在 Pusher的帮助下解决我的问题.这就是我所做的:

正常设置我的Iron MQ推送队列.在routes.php中:

Route::post('queue/push',function() {
    return Queue::marshal();
});

安装pusher laravel package.

在我的控制器中然后我队列::推送我的数据.在关闭内部,我触发了一个新的Pusher通道.这显然只会在从IronMQ返回数据时触发.

public function getCompletedTasks() {

    $user = User::find(Auth::user()->id);

    Queue::push(function($job) use ($user) {

        $recent = new Recent;
        $tasks  = $recent->getCompletedTasks($user);

        $pusher = new Pusher('xxx','xxx','xxx');
        $pusher->trigger('reports','get_completed_tasks',array('tasks' => $tasks));

        $job->delete();
    });
});

接下来在我的视图中,我调用我的AJAX函数没有回调,因为我还没有做任何其他事情:

$.get('account/tasks/completed');

接下来在我看来我初始化Pusher,订阅事件并将get_completed_tasks绑定到Pusher通道.现在我们只是等待Pusher的响应,这将允许我执行我原来的AJAX请求的后半部分:

{{ HTML::script('//js.pusher.com/2.1/pusher.min.js') }}
<script>
var pusher  = new Pusher('xxx');
var channel = pusher.subscribe('reports');
    channel.bind('get_completed_tasks',function(data) {
        // do something with the data returned
    });
</script>

一旦我在我的应用程序中使用Pusher,其余的都是轻而易举的.希望这有助于某人!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读