問題タブ [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.

0 投票する
1 に答える
870 参照

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

0 投票する
1 に答える
614 参照

node.js - プッシュ トゥ トーク - socket.io でプッシュ ボタンを管理する方法

socket.io がホストされている 2 つのサーバーがあり、2 つのアプリ間の通信は redis で管理されています。

ユーザー1がプッシュボタンをクリックすると、redisのサーバー側で、次のようにエントリを作成しています

部屋:A -> ユーザー1

ユーザー 2 がプッシュ ボタンをクリックすると、ユーザー 1 の redis に既にエントリがあるため、ルーム ビジー メッセージが表示されます。

ユーザー 2 がボタンを引っ張ると、redis からエントリが削除されるため、他のユーザーが話す順番になります。

ただし、100 人のユーザーがアクションを実行している場合の問題は、リアルタイムで機能していません。

socket.io でプッシュ ボタンを管理する方法についてのアイデアはありますか?

0 投票する
1 に答える
697 参照

angularjs - AngularJS アプリケーションで状態を切り替えると、ソケット イベントが複数回発生する

複数の状態 (ルート) を持つ Angular JS アプリケーションを、バックエンドで実行されているノード サーバー (ソケット) に接続しています。他の状態を訪れて、ソケット コードが記述されている状態に戻ると、再び登録され、イベントが発生すると関数が複数回呼び出され、パフォーマンスに影響します。

io.connect('localhost') もサービスに入れて、イベントのみをコントローラーに入れてみましたが、それも複数回発生しています。