Socket.io-client: io.Managerとio.Socketの違いは何ですか?

作成日 2018年06月22日  ·  14コメント  ·  ソース: socketio/socket.io-client

私はsocket.io-clientに少し慣れていません。 ドキュメントを数回読んだ後でも、io.Managerとio.Socketの違いがわかりません。 基本的に、io()から新しいソケットを生成できます。 しかし、どうすればマネージャーインスタンスを生成できますか? 一方、ManagerのイベントとSocketのイベントの違いは何ですか。

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

question

最も参考になるコメント

ええ、ドキュメントにはこれらの作成方法が記載されているようですが、それらがユニークである理由と、どちらをいつ使用するかについては説明されていません。

全てのコメント14件

+1

+1

ええ、ドキュメントにはこれらの作成方法が記載されているようですが、それらがユニークである理由と、どちらをいつ使用するかについては説明されていません。

これまでのところ、マネージャーのプロパティのほとんどはiopieceに直接適用できます。
例えば
socket = io( 'http://192.168.2.2:8088' + Param.chatNamespace + '?parammmm=1', { query: { key: 'Michael' }, path: Param.path, transports: ['websocket'], autoConnect: false, // like this, could be found in manager piece } );
そしてそれが私が完璧に望んでいることです。

私も

違いがある場合は、次の違いを知りたいです。

  • io(url、options)
  • io.connect(url、options)

そして、その目的は何ですか:

  • 新しいマネージャー(URL、オプション)

パラメータの非常に詳細であるが冷静な説明を除いて、ドキュメントで使用できるものを見つけることができないようです。

また、ブラウザのクライアントhtmlページでsocket.ioまたはsocket.io-clientのいずれかを使用できる場合

申し訳ありませんが、このライブラリには多くの作業が行われているようですが、コツをつかむのは非常に混乱しています。

同意します。 マネージャーインスタンスとソケットインスタンスの違いが見つかりません。

+1、

+1

メン!! だからこれに対する応答はまだありませんか? wthのように!

こんにちは! ManagerクラスとSocketクラスの詳細をここここに追加しまし

Managerは、サーバーへの接続を確立する低レベルのエンジンであるEngine.IOクライアントインスタンスを管理します(WebSocketやHTTPロングポーリングなどのトランスポートを使用)。
Managerは再接続ロジックを処理します。
1つのマネージャーを複数のソケットで使用できます。

ソケットは、サーバーと対話するための基本的なクラスです。 ソケットは特定の名前空間(デフォルトでは/)に属し、基盤となるマネージャーを使用して通信します。

基本的に、マネージャーインスタンスは、 io()実行時に暗黙的に作成されます。 ソケットのio属性を使用してアクセスでき、別のソケットを作成する場合に再利用されます( forceNewオプションを使用しない場合)。

const socket = io();
const socket2 = io("/test2");
// socket.io === socket2.io
const socket3 = io("/test3", { forceNew: true }); // new manager
// socket.io !== socket3.io

イベントに関して、次のイベントは接続の状態に関連しており、マネージャーとそれに関連するソケットの両方から発行されます。

  • connect_error
  • connect_timeout
  • 再接続
  • 再接続
  • reconnect_error
  • reconnect_failed
  • ping
  • ポン

ソケットは、名前空間に関連する次の追加イベントを発行します。

  • 接続する
  • 切断
  • エラー

それで十分かどうか教えてください。 そして遅れてすみません!

@darrachequesne説明ありがとうございます。また、 io(url, options)との違いを少し説明していただけますか
io.connect(url, options)お願いしますか? ドキュメントには、両方ともソケットインスタンスを返すと書かれていますが、どうすればそれらを異なる方法で使用できますか?

私も

違いがある場合は、次の違いを知りたいです。

  • io(url、options)
  • io.connect(url、options)

そして、その目的は何ですか:

  • 新しいマネージャー(URL、オプション)

パラメータの非常に詳細であるが冷静な説明を除いて、ドキュメントで使用できるものを見つけることができないようです。

また、ブラウザのクライアントhtmlページでsocket.ioまたはsocket.io-clientのいずれかを使用できる場合

申し訳ありませんが、このライブラリには多くの作業が行われているようですが、コツをつかむのは非常に混乱しています。

io(url, options)io.connect(url, options)はどちらも等しいと思います。

// https://github.com/socketio/socket.io-client/blob/2.3.0/lib/index.js#L15
module.exports = exports = lookup;

// https://github.com/socketio/socket.io-client/blob/2.3.0/lib/index.js#L85
exports.connect = lookup;

さて、なぜ同じことをする2つの異なる方法があるのですか、それは良い質問です...:smile:。 2012年以降はそのように思われます: httpsconnect()を削除できます。

マネージャーコンストラクターに関しては、パブリックAPIから削除する必要があるかもしれません。 基本的に:

const socket = io("ws://example.com/my-namespace", {
  reconnectionDelayMax: 10000,
  query: {
    auth: "123"
  }
});

// is the same as
const manager = new Manager("ws://example.com", {
  reconnectionDelayMax: 10000
});
const socket = manager.socket("/my-namespace", {
  query: {
    auth: "123"
  }
});

ドキュメントを更新しました: https

それが今より明確になることを願っています!

マネージャーにアクセスできることは非常に理にかなっているため、この方法では、パッケージが保持するグローバルなデフォルトマネージャーを使用する代わりに、ソケットインスタンスを完全に制御できます。このマネージャーは、別のパッケージfeによって共有されることもあります。

このページは役に立ちましたか?
0 / 5 - 0 評価