問題タブ [phpwebsocket]
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.
javascript - db テーブルにレコードが挿入されるたびに CakePhp ビューを更新する
ブラウザを介して記録やレポートをリモートで表示できるアプリケーションを作成しています。私は CakePHP を使用してアプリケーションを作成し、正常に動作させましたが、アプリケーションはデータを読み取るだけで挿入を行わないため、ユーザーがビューを開いてレコードが挿入されたときに必要な小さな問題が 1 つあります。ユーザーがページを更新して新しいレコードを取得するのではなく、開いているすべてのクライアントを更新する必要があります。実際に動作する CakePHP Websocket プラグインはありますか? 私たちのウェブホストは、プログラムのインストールやApacheモジュールの追加を許可していないため、nodejsまたは同様のソリューションはここでは適用できません.
アプリケーションファイルをウェブサーバーにアップロードするだけですべてが実行される、純粋にphpとjavascriptの実装を探しています。ファイルをアップロードした後、実行したり、エクストラをインストールしたり、apache などで構成を行ったりする必要はありません。
これは、ビューにデータを取得するコントローラーの1つ(BooksController.php)の関数です
これは、ページ分割されたテーブルにデータを表示するビュー (list_books.ctp) の 1 つです。
ビューを自動更新するには、ビュー、コントローラー、またはモデルに何を追加できますか? これはajaxを使用して達成できますか?
php - PHP WebSocket が自動的に切断される
メッセージング目的でプロジェクトに websocket 機能を使用しています。次のリンクからダウンロードした PHP websocket を使用しています https://github.com/Flynsarmy/PHPWebSocket-Chat。しかし、私の問題は、Web ソケットがしばらくの間自動的に切断され、再び自動的に再接続されることです。このため、私のメッセージは失われています。この問題を解決する方法を教えてください。この問題を克服できるようにコードを変更することはできますか? ありがとうございました。
以下は私のserver.phpファイルです
そしてJavaScriptコードは
php - ロング ポーリングまたは WebSocket
私は、画面上の人々と同時に複数の 1 対 1 の会話を行う Web チャットを書いています。(基本的に、グループチャットなしの個人的なメッセンジャーのように).
私のテクノロジーの選択肢は、Long Polling と WebSockets のようで、選択しようとしています。
ロング ポーリングの利点は、実装が非常に簡単で、必要なデータ (ページの更新に必要なデータを含むカスタマイズされた JSON オブジェクト) を返すことができることです。
WebSockets で私が恐れているのは、PHP にネイティブ ライブラリがないことです。そのため、さまざまなサード パーティのライブラリ間で買い物をする必要があり、チャネルやサブスクリプションなど、概念がより複雑に見えます。
ブラウザの互換性は私にとって問題ではありません。
ロング ポーリングのパフォーマンスは、Websocket よりもはるかに劣っていますか? いいえの場合、私の決定は簡単です。
PHP 用の本当に単純な Websocket サーバーはありますか? それとも、コンセプトはとても単純なので、自分で書くことができますか? (Mozilla にはクライアントの作成に関する非常に簡単なチュートリアルがありますが、サーバーではありません)。
laravel - WebSocket を使用する場合のベスト プラクティスは?
Laravel 4 で記述された Web アプリケーションを取得しました。このアプリケーションは Ratchet を使用し、より具体的には、パッケージLatchetを使用します。補足として、私は次のテクニックを使用しています:
これで、次のシナリオが得られました。
- Websocket を介して更新を受信する必要があるスライドショーがあります。
- アプリケーション全体がセットアップされ、ZeroMq を介して PHP から Websocket クライアントに新しいコード変更を公開できます。
私のroutes.phpには、トピックが正しく登録されるように、次のコードがあります。
/li>次に、ラチェット サーバーを起動します。
sudo php artisan latchet:listen
写真がアップロードされたら、次のコードを実行して、トピックをリッスンしているクライアントに更新をプッシュできます (PhotoStream/client1
この場合)。
このコードはすべて機能しますが、更新の場合です。私の質問は次のとおりです。
クライアントの初期化はどのように処理すればよいですか?
- 最初に単純な古い PHP でページをレンダリングしてから、Websocket クライアントを初期化してから、さらに更新 (ある場合) を受け取る必要がありますか?
- または、新しい websocket クライアントを登録するときに、リクエストに追加のパラメーターを指定して、サーバーが websocket を介して完全なデータを送信する必要がありますか?
2 つのオプションのうち後者が最良のオプションのように思えますが、これを適切に実装する方法がよくわかりません。
amazon-ec2 - Amazon ec2 環境で WebSocket が機能しない
このリンク " http://www.flynsarmy.com/2012/02/php-websocket-chat-application-2-0/ "を利用して、websockets を介してチャット アプリケーションを作成しました。自分の開発サーバーでは完全に機能していますが、会社の amazon ec2 サーバーでホストすると、次のエラーが表示されます:「Firefox は、amazon:port/ の ws://external ip でサーバーへの接続を確立できません。 "
クライアントをサーバーに接続しようとするときにサーバーの外部 IP を使用し、サーバー ファイルを実行するときに Amazon のサーバーの内部 IP を使用しています。また、ec2 に転送ルールを設定して、UDP だけでなく tcp でもポートにアクセスできるようにしました。
また、Amazon サーバーの ELB を確認しましたが、サーバーに ELB が配置されていません。
それでも機能しません。これは、ソケットが作成され、クライアントが接続されるサーバーのファイルのコードの一部です。
この問題は、作成されたソケットを選択できない socket_select() 関数を中心に展開していると思います。それを機能させる方法は?何度試してもこの問題を解決できないので、助けてください。
アップデート
この問題は、Amazon の古いバージョンの Python が原因で発生していることがわかりました。そこで、python のバージョンを 2.6/2.7 に変更しました
また、チャットを実行するために socket.io ライブラリを置き換えました。その作業は非常にスムーズです。
javascript - codeigniter で websocket を使用して、ページを更新せずにコンテンツを更新する方法
私はphpフレームワークcodeigniterで作業しています。ページを更新せずに情報が更新されるように、websocket を介してレコードを更新したいと考えています。ajax 、 jquery を使用できますが、これは websocket 経由で行う必要があります。したがって、websocket でこの機能を実現する方法と、codeigniter でそれを使用する方法を誰でも手伝ってください。
javascript - MySQL データベースの変更で WebSocket の更新を送信する方が効率的です
私は現在、潜在的に低帯域幅の環境で一定の AJAX リクエストの必要性を減らす/削除するために、WebSocket を試しています。すべてのデバイスは WebSocket に準拠しているため、問題はありません。node.js やその他のフレームワーク / ライブラリを使用せずに、ネイティブ PHP WebSocket に維持しようとしています (これまでのところ問題ありません)。
私がやろうとしているのは、別のクライアントによるデータベースへの更新について、接続されたクライアントに通知する方法を決定することです。問題のユースケースは、デバイスのボタンを押す人であり、そのボタンが押されたことをその人のマネージャーに警告します。したがって、私が持っている2つのオプションは次のとおりです。
1. データベース クエリのループ (PHP)
私が最初に考えたのは、「アラート フィールドが変更されましたか? その場合はマネージャーに通知する」という効果的なクエリを WebSocket サーバーに挿入することでした。これは(私が考えることができる)最も簡単で賢明なアプローチですが、毎秒クエリを実行しているサーバーの負荷を軽減するように設計された PHP スクリプトを使用するのは無駄に思えますが、少なくともこれにより、データベースの更新が検出されると、更新が送信されます。
2. クライアントからの通知の送信
私が考えていたもう 1 つの考えは、クライアントがデータベースを更新するときに、実際には WebSocket 通知を自分で送信できるということでした。これには、集中的でループするクエリを減らすという利点がありますが、次のようなデータを変更するたびに、WebSocket メッセージを送信する必要があることも意味します。
おそらくこれが最も効率的であるため、これが最良のオプションですが、データベースの更新と WebSocket 通知の送信の間に接続が切断される可能性があり、PHP ファイルでフォールバック チェックが必要になる可能性があるのではないかと心配しています。 、より長い間隔ではありますが(30秒ごとに言ってください)、最初のソリューションのものとよく似ています。
3.MySQL トリガー?
これは単なる推測ですが、おそらく別のオプションは、server.php ファイルに直接通知できる MySQL トリガーを作成することですか? これがどのように機能するかはわかりませんが、これが解決策 1 と同じまたは類似のクエリ要件になる可能性があると推測する危険がありますが、それはただのことです...
よろしくお願いします:)
編集: 解決策の可能性 4
実際、別の考えが頭に浮かびました。データベースの更新に使用される PHP ファイルには、実際には WebSocket メッセージが組み込まれている可能性があります。PHPファイルがデータベースを更新すると、WebSocketサーバーはPHP経由で通知されますが、これは可能ですか?