Apa perbedaan keduanya?
Saya perhatikan bahwa jika saya berubah dari socket.emit
menjadisocket.send
dalam program yang berfungsi, server gagal menerima pesan, meskipun saya tidak mengerti mengapa.
Saya juga memperhatikan bahwa dalam program saya jika saya beralih dari socket.emit
ke socket.send
, server menerima pesan, tetapi tampaknya menerimanya beberapa kali. Ketika saya gunakan console.log()
untuk melihat apa yang diterima server, itu menunjukkan sesuatu yang berbeda dari ketika saya menggunakannyasocket.emit
.
Kenapa perilaku ini? Bagaimana Anda tahu kapan harus menggunakan socket.emit
atau socket.send
?
socket.send
hanya sekadar alias untuksocket.emit('message', message);
Sederhana dan tepat (Sumber: grup google Socket.IO ):
socket.emit
memungkinkan Anda untuk memancarkan acara khusus di server dan kliensocket.send
mengirim pesan yang diterima dengan'message'
acara tersebutsumber
TL; DR:
socket.send(data, callback)
pada dasarnya sama dengan meneleponsocket.emit('message', JSON.stringify(data), callback)
Tanpa melihat kode sumber, saya akan berasumsi bahwa fungsi kirim lebih efisien diedit: untuk mengirim pesan string, paling tidak ?
Jadi pada dasarnya ya memancarkan memungkinkan Anda untuk mengirim objek, yang sangat berguna.
Ambil contoh ini dengan
socket.emit
:dan bagi mereka yang menjaga skor di rumah, inilah yang terlihat seperti menggunakan
socket.send
:sumber
socket.send
diimplementasikan untuk kompatibilitas dengan antarmuka vanilla WebSocket.socket.emit
adalah fitur dari Socket.IO saja. Mereka berdua melakukan hal yang sama, tetapisocket.emit
sedikit lebih nyaman dalam menangani pesan.sumber
Dalam sistem komunikasi dua arah dasar, socket.emit telah terbukti lebih meyakinkan dan mudah digunakan (pengalaman pribadi) dan merupakan bagian dari Socket.IO yang terutama dibangun untuk tujuan seperti itu.
sumber
https://socket.io/docs/client-api/#socket-send-args-ack
socket.send
// Mengirim acara pesansocket.emit(eventName[, ...args][, ack])
// Anda dapat mengubahsuai eventNamesumber