使用環境: thinkphp5.0
projectRequirements
フロントエンドが注文を出し、バックエンドがそれを受け入れてすぐにプロンプトを表示します。例: Meituan Takeaway では、クライアントが注文に成功すると、販売者にはすぐに注文を受け取るための音声プロンプトが表示されます。
開発環境
- thinkphp5.0
- phpsocketio
(ソケットサービスはシェルを満足できる環境で使用する必要があります)
socketio の利点
これは私の意見です。 Socketio については詳しく説明しているので、簡単にまとめます。
- サーバー IO 負荷の軽減
- 長い接続率
ajax
ポーリングは信頼性があります - サービスは安定しており、動的をサポートしています
簡単に確認したところ、メモリ使用量は非常に少なく、プロセスは 1 つだけです。公式レポートによると、1 つのプロセスは 10,000 人の高同時実行にも対応できるとのことです。
公式ドキュメント
https://github.com/walkor/php...
開発を開始
phpsocketio のインストール
まず、thinkphp のプロジェクト ルート ディレクトリに cd します。次のコマンドを使用します。
1 |
|
(Composer ではここでは説明しません。問題がある場合は、試してみてください。解決できるはずです。)
インストール後、 vendor
フォルダーの下に workman フォルダーがあるはずです。存在する場合は、インストールされました。
サービス エントリ ファイル
に戻ります。プロジェクトのルートディレクトリに新規socketio.php
を作成し、編集を開始します
1 2 3 4 5 6 |
|
ここに書くだけでOKです。以降のすべての作業では、この存在を無視してかまいません。
サービス コントローラーを作成します。
前の手順の socketio.php
ファイルで、モジュール バインディングを作成します。 'socketio/Server/index'
に到達したら、手動で作成する必要があります。理解するために、ディレクトリを使用して表示します。
1 2 3 4 |
|
Server.php
エントリ ファイルはこのコントローラーにのみバインドされているため、これがソケット全体のコアとなります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
|
socketio をトリガーする API を作成する
同様に、socketio の下に新しい API コントローラーを作成できます。これはテスト専用です
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
これでserver
サーバー側、API
トリガー側、それを表示する必要があります。これがフロントエンドです
フロントエンド
#今書きたいのは、マーチャントが受け取ったプロンプトです。前に作成したserver サーバーは phpsocketio 監視およびソケット サービスを提供し、
API はイベント トリガー、つまり誰かが注文した後のトリガーを提供します。注文はトリガーするイベントとして使用されます。サーバーソケットを接続して、フロントエンドに応答できるようにします。
1 2 3 4 5 6 7 8 9 10 11 |
|
- ポート ドメイン名: ドメイン名は外部ネットワークのドメイン名です。もちろん、ソケット サービスと同じ IP の下にある必要があります。つまり、ソケットはIP は
- 114.114.114.114
です。このドメイン名は、IP
114.114.114.114の下にある必要があります。ポートは、バックエンド サービスの
new SocketIOのポートです。
- socket.on()
このドキュメントには
socket.on('content',function(msg){....})が含まれていますが、次のように読むことができます。 Server.php で
$io->emit('new_msg', '');ここでのカスタム イベントは明らかに
new_msgと呼ばれていますが、
と書かれています。コンテンツ、おそらく私は盲目ではっきりとは見えませんでしたが、コールバック イベント名
デプロイ後、開始する必要があることにも注意する必要があることを思い出していただきたいと思います。 running
すべてのファイルがデプロイされたので、サーバー管理に入り、shell を開きます。
cdプロジェクトのルート ディレクトリに移動します。次に、
1 |
|
Start# を実行します。
|
---|
|
---|
|
---|
|
---|