2017-08-11 13 views
0

私は、2つの異なるLaravel 5.4アプリ、注文を受け取り、管理するレストランメニューシステム、顧客が注文できる1つのウェブサイトを持っています。両方のアプリケーションは異なるサーバー(localy)で動作します。つまり、私の(windows)システムでは、一度に1つのアプリケーションしか実行できません(localhost:8000)。どちらも同じデータベーステーブルを使用しています。私の質問は、レストランのメニューシステムにユーザーがウェブサイトから注文したとき、つまりデータベース内のOrdersテーブルに新しい行を追加したときにレストランメニューシステムに通知する方法です。私は通知を必要とするだけでなく、ここに表の新しい行を自動生成する: Restaurant Menu System。私はJQuery Ajaxでそれをやろうとしましたが、注文ページにajax関数をトリガーするものがないので失敗しました。 JQuery setInterval()をhereから試してみましたが、非常に非効率な方法のように思えますが、Uncaught SyntaxError: Invalid or unexpected tokenというエラーも出ます。私はFacebookの通知ほど円滑になりたい。それを行うためのパッケージやトリックはありますか?1つのlaravelアプリから別のlaravelアプリへの通知を送信

ウェブサイトは、ユーザーが支払いをして注文できるカートとチェックアウトシステムを備えた他のeコマースウェブサイトと同じように見えます。どんなリードも感謝しています。

+0

答えが何もない場合は、laravel Echoを見てみてください。これはちょうどあなたが望むライブ通知の種類です。 – milo526

+0

Laravel Echoは同じアプリだけではなく、異なるユーザーの通知にしか使えないと思います。 Echoに関連するアプリは同じアプリで通知を表示します。 – kaustabh

+0

ajaxをトリガーする方法は何ですか?彼らはそれを注文するために何かをクリックする必要はありませんか?なぜあなたはそれを使用できないのですか?また、仮想ホストを設定する方法を理解できれば、これらのアプリを並行して実行することができます(またはLaragonを使って処理することができます)。 – user3158900

答えて

0

私には2つの選択肢があります。

私はFacebookが使用している、または少なくとも1つのポイントで使用されていると思う彗星と呼ばれる技術です。基本的にあなたのサーバとのajax接続を開き、あなたのサーバに変更があるかどうかを確認することがあります。あなたのケースでは新しい注文があり、必要な場合は適切にリクエストに応答します。あなたはこれにAJAXの接続を開くときにそれがどのように見えるかの非常に基本的なバージョンは...

while (true) { 
    $order = Order::where('new', 1)->first(); 

    if ($order !== null) { 
     $order->new = 0; 
     $order->save(); 
     return $order; 
    } 

    sleep(5); // However long you want it to sleep for each time it checks 
} 

、それだけでサーバーの応答を待つために起こっています。注文が行われ、サーバーが最終的に応答すると、あなたのajax関数が応答を得て、2つのことを行う必要があります。

  1. は、順序を表示して、再度

このアプローチの欠点は、基本的にはまだださあなたはそれを待っているプロセスを開始します

  • 再オープン接続をしたい他のどんな処理を行いますそのロジックをサーバーに移動したことを除いて、setIntervalアプローチを使用します。これは最も効率的です。なぜなら、最大の問題は多くのものではなく単なる要求であり、大した問題ではないからです。利点は本当に簡単です。

    2番目の方法はもう少し仕事ですが、さらに効率的です。

    https://laravel.com/docs/5.4/broadcasting

    あなたはおそらく何がそこに作成されるたびので、それはそれを管理するためにあなたが設定しているものは何でもjavascriptのコードに手を差し伸べるために放送使用する設定にご注文のテーブルの上にイベントを持っていると思います。

  • 関連する問題