Dalam catatan blog sebelum ini Socket.IO, saya secara ringkas memperkenalkan penggunaan asas Socket.IO dan mencipta DEMO bilik sembang ringkas. Berdasarkan bab pengenalan, artikel ini terus meneroka penggunaan lanjutan Socket.IO. Artikel ini akan bermula dengan konfigurasi, bilik, acara, dsb., dan memperkenalkan beberapa API praktikal dan langkah berjaga-jaga dalam Socket.IO.
1 Socket.IO menyediakan 4 API konfigurasi: io.configure, io.set, io.enable, io.disable. Antaranya, io.set menetapkan satu item, dan io.enable dan io.disable digunakan untuk menetapkan satu item dalam konfigurasi Boolean. io.configure membolehkan anda mengkonfigurasi parameter yang berbeza untuk persekitaran pengeluaran yang berbeza (seperti pembangunan, ujian, dll.). Berikut mentakrifkan konfigurasi berbeza Socket.IO dalam pembangunan dan persekitaran keluaran:
io.set('tahap log', 1);
});
io.configure('release', function(){
});
1).pengangkutan (lalai ['websocket', 'htmlfile', 'xhr-polling', 'jsonp-polling']): Tatasusunan yang mengandungi jenis kaedah komunikasi. Socket.IO menyokong pelbagai cara untuk mencapai komunikasi segera dalam talian, seperti soket web, pengundian, dll. Konfigurasi ini membolehkan anda memilih kaedah komunikasi alternatif.
2).tahap log (lalai 3): tahap keluaran log yang paling rendah, 0 ialah ralat, 1 adalah amaran, 2 ialah maklumat, 3 ialah nyahpepijat, lalai adalah untuk mengeluarkan semua jenis log.
3).selang degupan jantung (lalai 25 saat): selang penghantaran paket degupan jantung Pelanggan perlu menghantar paket degupan jantung ke pelayan dalam tempoh masa ini untuk mengekalkan komunikasi.
Bilik adalah fungsi yang sangat berguna yang disediakan oleh Socket.IO. Bilik adalah sama dengan menyediakan ruang nama untuk beberapa pelanggan tertentu Semua siaran dan komunikasi dalam bilik tidak akan menjejaskan pelanggan di luar bilik.
Dalam bab pengenalan, kita tahu bahawa socket.join('room name') boleh digunakan oleh klien untuk masuk ke dalam bilik, dan socket.leave('room name') boleh digunakan untuk meninggalkan bilik. Apabila pelanggan memasuki bilik, ia boleh menyiarkan mesej dalam bilik dalam dua cara berikut:
io.sockets.in('bilik lain').emit('event_name', data);
//Siarkan kepada semua pelanggan
//Dapatkan maklumat bilik yang dimasukkan oleh soket ini melalui socket.id
3. Acara
Socket.IO mempunyai beberapa acara lalai terbina dalam semasa mereka bentuk acara, kita harus mengelakkan nama acara lalai dan menggunakan acara lalai ini secara fleksibel.
Acara sampingan pelayan:
1).io.sockets.on('connection', function(soket) {}): Dicetuskan selepas sambungan soket berjaya, digunakan untuk pemula
socket.on('message', function(message, callback) {}): Peristiwa ini dicetuskan apabila klien menghantar mesej melalui socket.send ialah mesej yang dihantar dan panggilan balik ialah panggilan balik yang akan dilaksanakan selepas menerima mesej
2).socket.on('anything', function(data) {}): Dicetuskan apabila sebarang peristiwa diterima
3).socket.on('disconnect', function() {}): Dicetuskan apabila soket terputus sambungan (termasuk menutup penyemak imbas, memutuskan sambungan secara aktif, memutuskan sambungan, dsb. sebarang situasi pemutusan sambungan)
Acara pelanggan:
1).sambung: Sambungan berjaya
2).menyambung: Menyambung
3).putuskan sambungan: Putuskan sambungan
4).connect_failed:Sambungan gagal
5).ralat: Ralat telah berlaku dan tidak boleh dikendalikan oleh jenis acara lain
6).mesej: Sama seperti acara mesej sebelah pelayan
7).apa-apa sahaja: Sama seperti acara apa-apa bahagian pelayan
8).reconnect_failed: Sambung semula gagal
9).sambung semula: Berjaya menyambung semula
10).menyambung semula: Menyambung semula
Di sini kita perlu menyebut susunan soket pelanggan memulakan sambungan. Apabila menyambung buat kali pertama, urutan pencetus acara ialah: menyambung->sambung apabila sambungan terputus, urutan pencetus acara ialah: putuskan->sambung semula (mungkin beberapa kali)->sambung->sambung semula- >
4 1). Siarkan kepada semua pelanggan: socket.broadcast.emit('broadcast message');
2). Masuk ke bilik (sangat mudah digunakan! Ia bersamaan dengan ruang nama dan boleh disiarkan ke bilik tertentu tanpa menjejaskan pelanggan di bilik lain atau tidak di dalam bilik): socket.join('nama bilik anda' );
3). Siarkan mesej ke bilik (pengirim tidak boleh menerima mesej): socket.broadcast.to('nama bilik anda').emit('broadcast room message');
4). Siarkan mesej ke bilik (termasuk pengirim boleh menerima mesej) (API ini milik io.sockets): io.sockets.in('nama bilik lain').emit('broadcast room messages ' );
5). Paksa penggunaan komunikasi WebSocket: (klien) socket.send('hi'), (server) gunakan socket.on('message', function(data){}) untuk menerima.
Pengenalan kepada penggunaan lanjutan Socket.IO pada dasarnya berakhir di sini. Secara peribadi, saya merasakan bahawa API asas ini mencukupi untuk kegunaan harian, yang juga mencerminkan falsafah reka bentuk Socket.IO yang sangat ringkas dan mudah digunakan. Artikel ini hanyalah pengenalan Apabila anda menghadapi masalah yang tidak dapat diselesaikan dalam aplikasi sebenar, adalah lebih baik untuk menyemak WIKI terperinci rasmi.