0

nodeJs と Socket.io を使用して、既存のプロジェクトにいくつかのソケットを追加したいと考えています。私はすでに2つのサーバーを持っています:

  • データを保存および管理するための API RESTful Web サービス。
  • HTML、アセット (js、css、画像など) を返すパブリック Web サービス

最初の試行では、パブリック ソケット サーバーにソケット サーバーを作成します。しかし、ソケットクエリのみを処理するために別のものを作成した方が良いと思います。

どう思いますか ?解決するよりも多くの問題を追加するのは良い考えであるか、単に役に立たない人です(おそらくインターンライブラリが重複している可能性があります..)

また、Public と API の間の通信にトークンを使用していますが、ソケットと API の間の通信に別のトークンを作成する必要がありますか? または、同じものを使用できますか?

- - - [編集] - - -

誰も私をよく理解していなかったので、私が考えていたインフラストラクチャでスキーマを作成しました。

  1. 続行するのは良い方法ですか?
  2. 公開サーバーとソケット サーバーは同じでなければなりませんか? それとも別々にすることができますか?
  3. 接続されているクライアントごとに、API とソケット サーバー間のソケット接続を作成する必要がありますか?

ここに画像の説明を入力

ありがとうございました !

4

1 に答える 1

1

より良い説明をありがとう。

まず第一に、これは理にかなっているように見えますが、Socket.io を使用するこの方法は最も一般的な方法ではありません。Socket.io を使用する最大の利点は、双方向通信用にチャネルを開いたままにしておくことです。これの主な利点は、クライアントが定期的にポーリングしなくても、サーバー自体がクライアントにメッセージを送信できることです。
たとえば、メール クライアントについて考えてみましょう。ソケットがなければ、ブラウザは新しいメールをチェックするために定期的にポーリングする必要があります。代わりに、オープン ソケット接続を使用すると、新しいメールが届くとすぐにサーバーがクライアントに通知します。

あなたの場合、利点は限られている可能性があり、Socket.io サーバーの追加の複雑さ (およびコスト!) が、REST 要求の速度をわずかに改善する価値があるかどうかはわかりません。ただし、最後はあなた次第です。

あなたのポイントに答えて

  1. 上記を参照
  2. 「パブリック サーバー」が Node.js で記述されていない場合、同じアプリケーションにすることはできません。それらが同じサーバー上にあるかどうかは、あなたとあなたの予算次第です. 理想的には、ワークロードが大きい場合は、それらを別々にする必要があります。
  3. ソケット サーバーをリアルタイム プロキシとして機能させたいだけの場合は、要求ごとにソケット接続を作成する必要があります。それがどのように機能するかは次のとおりです。

    1. クライアントは Socket.io サーバーにリソースを要求します。
    2. Socket.io サーバーは、API サーバーに対して通常の HTTP 要求を実行します (例: を使用request) 。
    3. 応答は、ソケット接続を介してクライアントに返されます

#3 に示されているワークフローが、中程度のパフォーマンスの向上のみを期待する理由です。実際、レイテンシーはいくらか改善されますが、HTTP 要求を開始するためのオーバーヘッドのほとんどはまだ残っています!

于 2015-03-25T13:56:23.543 に答える