問題タブ [ajax-push]
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.
php - PHP / JQueryおよびプッシュテクノロジーを使用したWebチャット(少数のユーザーグループのみ、共有ホスティング)
私は10人のグループのための小さなプライベートサイトに取り組んでいます。それは本質的に私たちのためだけの小さなソーシャルネットワークです。現在、リアルタイムチャットにもWindows Live Messengerを使用していますが、Mac、Linux、およびスマートフォン用のMSNクライアントは、最近追加されたMSNのグループ機能をサポートしていないため、代替手段を作成することを検討しています。
私はプッシュテクノロジーについて少し読んで、私たちの非常に限られたニーズに合うWebベースのチャットルームを作成する方法を確認しました。Apacheは長時間のポーリングにはまったく適していないので、APEのようなものを使用する方がよいと思います。ただし、かなり安価ですが非常に優れた共有ホストで実行しているため、サーバー側のソフトウェアをインストールすることはできません。
私の質問に。
結局のところ、私たちはほんの一握りのユーザーであり、ほとんどの場合、私たちの半分だけがオンラインになるので、単純なPHPの長いポーリングが機能する可能性がありますか?チャットは午後の早い時間から夜遅くまでほぼ毎日開かれますが、すべてのユーザーが常にアクティブになるわけではありません。それでも、平均して5〜6人のユーザーが、毎日1日中離れることなくオンラインになります。私たちが最も活動的である場合、短期間に大量のメッセージが送信されることがありますが、その数を見積もるのは困難です。
それらのPHPサーバー実装とFlashフォールバックを使用したWebsocketの使用を検討する価値はありますか(デスクトップの使用では、基本的にすべてChromeを使用しているので問題ありませんが、Androidを使用できることを嬉しく思いますデバイスも)。
私もwww.pusher.comに出くわしましたが、無料の代替手段は非常に適しているようで、1日あたり20の接続と10万のメッセージがあります(1週間でもそれほど多くは届きません)。代わりにその道を進むことをお勧めしますか?
PHPとApacheを使用したプッシュテクノロジーに関してここにたくさんの質問があることは知っていますが、アプリケーションの使用が制限される状況に対処するものは何も見つかりませんでした。ヒントや提案をいただければ幸いです。私はチャット自体をどのように書くかをほぼ知っています。使用するのに最適な方法を知る必要があります。上記のいずれかが機能するかどうかを確認する必要があります。
javascript - GAEChannelAPI-ソケットがJavascriptから生きているかどうかを確認します
チャネルAPIを使用するアプリケーションがあります。接続は常に有効(24x7)である必要があり、チャネルが切断されるたびに新しいチャネルが自動的に作成されるように実装しました。これはほとんどの場合正常に機能しますが、onError()メソッドが呼び出されないシナリオがあります(接続されたWIFIの変更、コンピューターがスリープ状態になって戻ってくるなど)。そして、私のJSアプリは、チャネルがまだ生きているのに生きていないと誤って想定しています。
私が考えた解決策の1つは、メッセージの送信を求めるサーバーにpingを実行することです。キープアライブのように。しかし、これはサーバーにとって大きな負荷です。(たとえば、10秒ごとにping要求を送信する1000クライアントは、1秒あたり100要求のようなものです)
そのため、意図せずにサーバーにDoS接続を行わないように、接続がローカルで有効かどうかを確認する方法があるかどうか疑問に思いました。
ありがとう
javascript - PHP "PUSH" から Javascript へ
現在、クライアントがすべてを JavaScript で実行するローカル ネットワーク上で実行される Web アプリケーションがあります。すべてが同期していることを確認するために、これらのクライアントは現在、受信した最後の「syncId」を送信することにより、サーバーへの AJAX 要求を利用しています。次に、サーバーはコマンドの配列ツリーで応答して、このクライアントを最新の状態にします。これは毎秒実行され、ネットワーク帯域幅や遅延の問題はまだ発生していませんが、来月、この方法の限界を押し上げる可能性のあるより大きなクライアントにシステムをインストールする予定であり、サーバーを持つことが可能かどうか疑問に思っています」同期イベントをリアルタイムでクライアントにプッシュします。
上記は、syncItem[0] が autoIncrement ID、syncItem[1] が処理されるイベントのコード、syncItem[2] が関数のパラメーターである、同期されるイベントをシステムがチェックする場所です。このコードにはありませんが、呼び出されている httpGet 関数は、サーバーから取得して応答を返す単なる関数です。