Laravel - 使用推杆实时通知

时间:2017-09-20 14:24:57

标签: php jquery ajax laravel-5.2

我正在尝试在Laravel中进行实时通知,我决定使用pusher用于此目的(使用Pusher PHP Server)和Laravel事件。我想知道如何每秒检查数据库(例如,检查项目与库存数量较少)并通过Javascript告知用户前端用户。

与此同时,我有一个事件和一个监听器,它将数据推送到通知表和一个用于推送实例化和通道绑定的Javascript:

var pusher = new Pusher("{{ env('PUSHER_APP_KEY') }}", 
  {
    cluster: 'ap1',
    encrypted: true
  });

(function( $, pusher ) {

    var suppliesActionChannel = pusher.subscribe('is-critical');

    suppliesActionChannel.bind("client-supply-is-critical", function(data) {
        alert(data);
    });
})( jQuery, pusher);

我还制作了一个触发事件的控制器:

class SupplyNotificationController extends Controller
{
    /**
     * Trigger event when the supplies are in critical point.
     *
     * @return none
     */
    public function criticalNotify()
    {
        $supply = Supply::select('ItemName', DB::raw('COALESCE(SUM(ReceiptQty), 0) - COALESCE(SUM(IssuedQty), 0) AS BalanceQty'))->join('supply_stockcard_t', 'supply_stockcard_t.SupplyNo', '=', 'supply_t.SupplyNo')->having(DB::raw('BalanceQty'), '<=', 'ReOrderPoint')->groupBy('StockNo')->get();

        event(new SupplyInCriticalLevel('supply' => $supply));

        return response()->json('Success');
    }
}

我正在考虑每秒通过AJAX调用这个控制器方法,但我不确定这是否是执行任务的最佳方式。我应该继续使用这个解决方案,还是Laravel提供了更好的选择?

0 个答案:

没有答案