Socket.io-client: Apa perbedaan antara io.Manager dan io.Socket?

Dibuat pada 22 Jun 2018  ·  14Komentar  ·  Sumber: socketio/socket.io-client

Saya agak baru mengenal socket.io-client. Setelah membaca dokumen beberapa kali, saya masih belum mengerti apa perbedaan antara io.Manager dan io.Socket. Pada dasarnya saya dapat menghasilkan soket baru dari io (). tetapi bagaimana cara membuat instance manajer? Sementara itu, apa perbedaan antara event Manager dan event Socket.

Terima kasih.

question

Komentar yang paling membantu

Ya, sepertinya dokumentasinya memberi tahu kita cara membuatnya, tetapi tidak memberi tahu kita apa yang membuatnya unik dan kapan harus menggunakan salah satunya.

Semua 14 komentar

+1

+1

Ya, sepertinya dokumentasinya memberi tahu kita cara membuatnya, tetapi tidak memberi tahu kita apa yang membuatnya unik dan kapan harus menggunakan salah satunya.

Seperti yang saya coba selama ini, sebagian besar properti pengelola bisa langsung diterapkan dalam bentuk io piece
misalnya
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 } );
Dan itulah yang saya inginkan dengan sempurna.

saya juga

Saya ingin mengetahui perbedaannya, jika ada, antara:

  • io (url, opsi)
  • io.connect (url, opsi)

Dan apa gunanya:

  • Manajer baru (url, opsi)

Saya tidak dapat menemukan apa pun yang dapat digunakan dalam dokumentasi selain deskripsi parameter yang sangat detail namun dingin.

Juga, jika saya dapat menggunakan di halaman html klien browser saya, baik socket.io atau socket.io-client

Terima kasih dan maaf, saya melihat banyak pekerjaan telah dilakukan di perpustakaan ini tetapi sangat membingungkan untuk memahaminya.

Saya sangat setuju. Saya tidak dapat menemukan perbedaan apa pun antara manajer dan instans soket.

+1,

+1

Menh !! jadi belum ada tanggapan tentang ini ??? seperti wth !!

Hai! Saya telah menambahkan lebih banyak detail tentang kelas Manajer dan Socket di sini dan di sini .

Manajer mengelola contoh klien Engine.IO, yang merupakan mesin tingkat rendah yang menetapkan koneksi ke server (dengan menggunakan transport seperti WebSocket atau HTTP long-polling).
Manajer menangani logika koneksi ulang.
Satu Manajer dapat digunakan oleh beberapa Soket.

Socket adalah kelas dasar untuk berinteraksi dengan server. Soket milik Namespace tertentu (secara default /) dan menggunakan Manajer yang mendasari untuk berkomunikasi.

Pada dasarnya, instance manajer secara implisit dibuat saat menjalankan io() . Ini dapat diakses dengan atribut Socket io , dan akan digunakan kembali jika Anda membuat Socket lain (kecuali jika Anda menggunakan opsi forceNew ):

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

Mengenai peristiwa, peristiwa berikut ini terkait dengan status koneksi dan akan dikeluarkan oleh Manajer dan Soket yang terkait:

  • connect_error
  • connect_timeout
  • sambungkan kembali
  • menghubungkan kembali
  • reconnect_error
  • reconnect_failed
  • ping
  • pong

Socket akan mengeluarkan event tambahan berikut, yang berhubungan dengan Namespace:

  • Menghubung
  • memutuskan
  • kesalahan

Tolong beri tahu saya jika itu cukup jelas. Dan maaf atas keterlambatannya!

@darrachequesne Terima kasih atas penjelasannya, bisakah Anda menjelaskan sedikit perbedaan antara io(url, options) dan
io.connect(url, options) tolong? Dokter mengatakan mereka berdua mengembalikan contoh soket, tetapi bagaimana kita bisa menggunakannya secara berbeda?

saya juga

Saya ingin mengetahui perbedaannya, jika ada, antara:

  • io (url, opsi)
  • io.connect (url, opsi)

Dan apa gunanya:

  • Manajer baru (url, opsi)

Saya tidak dapat menemukan apa pun yang dapat digunakan dalam dokumentasi selain deskripsi parameter yang sangat detail namun dingin.

Juga, jika saya dapat menggunakan di halaman html klien browser saya, baik socket.io atau socket.io-client

Terima kasih dan maaf, saya melihat banyak pekerjaan telah dilakukan di perpustakaan ini tetapi sangat membingungkan untuk memahaminya.

Saya pikir io(url, options) dan io.connect(url, options) sama:

// 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;

Sekarang, mengapa ada dua cara berbeda untuk melakukan hal yang sama, itu pertanyaan yang bagus ...: smile:. Tampaknya seperti itu sejak 2012: https://github.com/socketio/socket.io-client/commit/d5652feadc1a2085942b5a6a22394f07242e77b2. Saya akan memeriksa apakah ada alasan khusus untuk itu, tetapi connect() dapat dihapus di v3.

Mengenai konstruktor manajer, mungkin itu harus dihapus dari API publik. Pada dasarnya:

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"
  }
});

Saya telah memperbarui dokumentasi: https://github.com/socketio/socket.io-website/commit/e779468a8df739a7ff4316719af2931d6ec70539

Semoga itu lebih jelas sekarang!

Memiliki akses ke manajer sangat masuk akal, jadi dengan cara ini Anda dapat memiliki kontrol penuh atas instance soket daripada menggunakan manajer default global yang dipegang oleh paket di bawahnya yang juga dapat dibagikan oleh paket lain fe.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat