要件の説明は非常に単純です。Android はデータを Web ページに送信します。
システム: Ubuntu 14.04 + apache2 + php5 + Android 4.4
考え方はソケット + メッセージキュー + サーバー送信イベントです。次の手順は Android 側、サーバー側、フロントエンドです。 PHP のプロセス間通信に焦点を当てています。
Android 側は比較的単純で、単なるソケット プログラムです。アクティブなメインスレッドで直接ソケットを作成すると、android.os.NetworkOnMainThreadException が報告されることに注意してください。そのため、サブスレッドを開いてソケットを作成するのが最善の方法です。コードは次のとおりです。 リーリー
それではメッセージを送信してください
リーリー
完了後にソケットを閉じる必要もあります
リーリー
これらのメソッドはメインスレッドで実行しないでください。
以下はサーバーPHP側です。
まず情報を受信するプロセスを実行します。
リーリー
それも比較的簡単です。このプロセスは独立して実行されるため、Web ページを開いてデータを要求するには、別のスクリプトからアクセスする必要があります。次に、上記の $msg_queue 変数であるメッセージ キューを使用する必要があります。メインのスクリプトプログラムはこのように書かれています。
リーリー ftok() 関数は、区別するためのキューキーを生成します。
次に、handleData() のタスクは、受信したメッセージをキューに入れることです
リーリー ソケット処理スクリプトのスケルトン リーリー
このようにして、他のプロセスはキーを介してこのキューを見つけ、そこからメッセージを読み取ることができます。これを使って読んでください
リーリー
リーリー
この getData.php は、メッセージ キューからデータを取得する上記のスクリプトです。これをサーバー イベントとして認識させるには、次のようにいくつかのフォーマット指示を追加する必要があります。
リーリー
今すぐ実行を開始できます。まずサーバーを実行してください
phpソケット.php
リスニングを印刷した後、Android デバイスを使用して接続できます。
その後、Web 上で JS を使用して getData スクリプトをリクエストし、リクエスト後、フロント デスクは継続的に新しいデータを取得できます。なお、メッセージキューがブロックされる(メッセージ量が上限に達する)場合や、JSメッセージの仕組み自体の制限があるため、欠落や遅延などが多発します。
Web コミュニケーションの古い問題は安定性です。以前は、パケットがドロップされる Web QQ にいつも憤慨していました。実際、Web 革命全体はまだ成功していません。