問題タブ [reactphp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
websocket - ラチェット イベント ループがブロックされる
ラチェットphpを使用してWebソケット接続を作成しています。クライアントに接続してからクエリを実行しました (クエリの実行には約 20 秒かかります) その間、別のクライアントに接続しようとすると、Web ソケット接続が保留状態になっていることがわかります (まだプロトコルを切り替えようとしています)。 . 後で最初のリクエストに対する応答が来たときに、サーバーが「新しい接続が確立されました」と出力することがわかります(このステートメントを onOpen 関数に保持しています)。
React php が NodeJs と同じ原理で動作する場合、処理に時間がかかっても接続が確立されるべきではないでしょうか?
後の実行部分が原因で Web ソケット接続がブロックされるのはなぜですか?
php - 反応PHPですべての約束が完了するのを待っています
私は約束の配列を持っています。
すべての約束が解決されたか拒否されたかに関係なく、すべての約束が私に応答を与えた後にのみ続行したい. all() 関数で処理できると思っていたのですが、配列内のすべてのプロミスが解決され、一部のプロミスの拒否を考慮していない場合にのみ機能するようです。
どんな機能が使えるの??
例: 関数 getUser は promise オブジェクトを返します。すべての約束が私に応答を与えたとき、約束が解決されたか拒否されたかにかかわらず、トリガーをキャッチしたいと思います。
array_push($this->users['users'], $this->userFetcher->getUser($userName));
ありがとう :)
php - Rachet を使用して単一のマシンに複数のサーバーを作成する方法
状況は、このようなシェル スクリプトを使用して Rachet ソケット サーバーを起動することです。
AngularJs Websocket サービスを使用するクライアント側の構築が既にあります。今のところ順調です。
質問 今のところ、ポート 8080 でこのサーバーを実行する端末で、このスクリプトを手動で実行しただけであることがわかります。
しかし、私が達成しようとしているのは、ユーザー生成のチャットルームを作成することです。
ある意味で、ユーザーが xdomain.com にアクセスしたとき。彼には、チャット ルームを作成するオプションがあります。彼がボタンをクリックすると、私のサーバーにヒットします。サーバーはそのユーザー用に新しいソケット サーバーを作成し、秘密のコード/リンクを提供する必要があります。ユーザーはこのコードを友達に送信します。
友人が xdomain.com にアクセスすると、2 つのオプションが表示されます。
1 - ルームに参加します (友人から入手したコードを提供する必要があります) 2 - チャットルームを作成します (これは、上記で説明したのと同じ方法で機能します)
今、私はこのアーキテクチャについて確信が持てません。良い/悪い/可能/不可能です。
1 台の Rachet Socket サーバーで処理できる接続数は?
チャットルームを作成するすべてのリクエストに対して、私のスクリプトは新しい使用可能なランダム ポートに新しい Rachet Socket Server を作成します。このサイトが非常に人気になると仮定しましょう。私の VPS は、異なるポートで非常に多くのソケット サーバーを開くことができますか? 利用可能なポートはたくさんありますか?
また、
単一のチャットルーム (Socker Server) で、ユーザーはメディア ファイルを転送したり、Socket Server が受信できるテキスト メッセージだけを転送したりできますか?
ありがとう
php - 別のマシンから反応サーバーに接続する
http://reactphp.org/の指示に従って、サーバーを作成しました。
次に、IPが192.168.1.200のLinuxボックスで起動しましたが、実行されているようです。
それをテストするには、ブラウザにhttp://127.0.0.1:1337/を配置するように言われていますが、マシンにはブラウザがありません。別の方法として、cURL を使用しました。実際には実行されていますが、アクセスできるのは as のみです127.0.0.1
(テストのために iptables をオフにしましたが、助けにはなりません)。
出力:
ifconfig
以下を示します。
別のマシンからこの反応サーバーに接続するにはどうすればよいですか?
php - Azure WebApp カスタム PHP サーバー
Azure WebApp で、IIS の代わりにカスタム Web サーバーを実行する可能性はありますか? (amphp/aerys または reactphp/http)
私は Node.js でそれが可能だと思うので、PHP には何らかの方法があるはずです。
予想される動作は、特定のポートでリッスンするカスタム PHP サーバーを使用し、IIS のみがすべての要求をこのポートにリダイレクトすることです。
しかし、Azure WebApp で長時間実行されるアプリが可能かどうかはわかりません。これは、いくつかのポートでリッスンします。そして、このアプリは自動的に起動する必要があります。
VM を使用できますが、Web アプリの方が見栄えがします。
php - ReactPHP/Socket サーバー - 接続タイムアウトの設定
react\socket を使用して TCP ソケット サーバーを使用しています。
クライアントから受信したデータに応じて、何かを行い、クライアントとの接続を閉じます。
問題は、サーバーが一定期間データを受信していない場合、接続をタイムアウトにする方法を理解できないことです。接続を閉じる方法は?
stream_set_timeout() を使用して stream_socket_accept() で行ったのと同じものを探しています
php - ループ内での ReactPHP のブロッキング
私はワーカーの並列実行を実現しようとしていますが、ReactPHP
私を助けるために使用しています。https://github.com/reactphp/react
しかし、私が期待している動作が得られません。
シナリオ:
私には3人の労働者がいます。
fetch.php
parse.php
notify.php
fetch.php
notify.php
実行するための前提条件がないため、並行して実行でき、最初に実行する必要があります。
parse.php
fetch.php
作業が完了するまで待機する必要があり、その後実行する必要があります。
だから私はprocess.php
すべての魔法が起こる私の親スクリプトを持っています。
したがって、この出力を取得する代わりに:
私は得ています
そして、スクリプトは解析が完了するのを待ってから、通知である次のタスクに進みます。
だから私は何か間違ったことをしています.ReactPHPを初めていじっているので、おそらく初歩的な間違いです.
私が再帰を使用していて、それがループなどをブロックしているという問題です。
私が解決しようとしているこの種の問題を解決するためにループが実装されていないのでしょうか?
php - ReactPHP - 切断された接続を閉じる
TCPリスナーコンポーネントにReactPHPを使用しています。このコンポーネントは、着信接続をリッスンし、それらとデータを交換します。$connections 配列は、クライアントがリスナーに接続/切断すると更新されます。
クライアントが telnet 経由で接続されている場合、'close' が出力されるため、閉じた接続を $connection 配列から削除できます。ただし、リスナーに接続する一部のデバイスにも問題があります。デバイスをオフにすると、「閉じる」は出力されません。定期的なタイマーの問題を解決しようとしました:
しかし、それは十分に信頼できないようです。関数 stream_get_meta_data は、クライアントが切断されていても有効なメタデータ配列を返します。
php - 各ユーザーの ReactPHP http サーバー、これは良い考えですか?
各ユーザーの ReactPHP http サーバー、これは良い考えですか?
私のアプリケーションでは:
- ログオンしている各ユーザーは、サーバーからデータを送受信します。平均して 1 秒あたり 1 つのリクエスト。
- サーバーの応答後、サーバーには、特定のユーザーに関連する追加の作業があります。
ログインするユーザーごとに新しい ReactPHP http サーバーを構築し、ユーザーがログアウトした後にサーバーを解放するだけです。
これは機能しますか?何か足りないのですか?