問題タブ [socket.io-redis]
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.
socket.io - Socket.io:多くの同時接続で送信遅延を減らす方法は?
200.000 の同時接続で 4 コアの Amazon EC2 インスタンス (m3.xlarge) をリソースの問題なしで実行しています (各コアは 10-20%、メモリは 2/14GB)。とにかく、CPUコアで最初に接続されたすべてのユーザーにメッセージを送信すると、ミリ秒以内にメッセージを取得しますが、最後に接続したユーザーは1〜3秒の遅延でメッセージを取得し、各CPUコアは1〜2秒間100%になります. この問題は、「わずか」50k の同時ユーザー (コアあたり 12.5k) でも気付きました。
遅延を減らすには?
redis-adapter を mongo-adapter に変更してみましたが、違いはありませんでした。
このコードを使用して、複数の CPU コアでスティッキー セッションを取得します。
https://github.com/elad/node-cluster-socket.io
テストは非常に単純でした。クライアントは接続するだけで、それ以上何もしません。サーバーはメッセージをリッスンするだけで、すべてに送信します。
編集: 50,000 クライアントでクラスター/アダプター ロジックを使用せずにシングル コアをテストしましたが、結果は同じでした。
サーバー、シングルコアサーバー、ベンチマーク、および html クライアントを 1 つのパッケージで公開しました: https://github.com/MickL/socket-io-benchmark-kit
node.js - プッシュ トゥ トーク - socket.io でプッシュ ボタンを管理する方法
socket.io がホストされている 2 つのサーバーがあり、2 つのアプリ間の通信は redis で管理されています。
ユーザー1がプッシュボタンをクリックすると、redisのサーバー側で、次のようにエントリを作成しています
部屋:A -> ユーザー1
ユーザー 2 がプッシュ ボタンをクリックすると、ユーザー 1 の redis に既にエントリがあるため、ルーム ビジー メッセージが表示されます。
ユーザー 2 がボタンを引っ張ると、redis からエントリが削除されるため、他のユーザーが話す順番になります。
ただし、100 人のユーザーがアクションを実行している場合の問題は、リアルタイムで機能していません。
socket.io でプッシュ ボタンを管理する方法についてのアイデアはありますか?
angularjs - AngularJS アプリケーションで状態を切り替えると、ソケット イベントが複数回発生する
複数の状態 (ルート) を持つ Angular JS アプリケーションを、バックエンドで実行されているノード サーバー (ソケット) に接続しています。他の状態を訪れて、ソケット コードが記述されている状態に戻ると、再び登録され、イベントが発生すると関数が複数回呼び出され、パフォーマンスに影響します。
io.connect('localhost') もサービスに入れて、イベントのみをコントローラーに入れてみましたが、それも複数回発生しています。