Socket.io adalah real-time engine opensource yang dibangun di atas Node.js. Dengan Socket.io kita dapat berkomunikasi secara real-time, dua arah dan komunikasi berbasis event. Dengan komunikasi berbasis event, kita tidak perlu request untuk mendapatkan data terbaru, yang perlu kita lakukan hanyalah subcribe ke event pada server kita. Jadi selama WebSocket tetap aktif dan terhubung ke event yang berada di server socket io kita, jika terdapat data baru di event tersebut, kita akan mendapatkan datanya secara otomatis.
Menginstall Socket IO
Kita dapat menggunakan perintah berikut untuk menginstall socket io
npm install socket.io
Pastikan Node.js sudah terinstall di komputer kita.
Setelah menginstall library socket io, selanjutnya kita dapat melakukan initialisasi server Node.js kita.
const app = require("express")();
const httpServer = require("http").createServer(app);
const options = { /* ... */ };
const io = require("socket.io")(httpServer, options);
io.on("connection", socket => { /* ... */ });
httpServer.listen(3000);
Events Pada Socket IO
1. Emitting events
Berfungsi untuk mengirimkan sebuah pesan dari server ke client dan dari client ke server, namun pada saat data yang dikirimkan telah sampai pada tujuannya maka client/server dapat menerima dengan menggunakan method on(),
// server-side
io.on("connection", (socket) => {
socket.emit("hello", "world");
});
// client-side
socket.on("hello", (arg) => {
console.log(arg); // world
});
2. Listening to events
Berfungsi untuk menerima data atau informasi yang dikirim dari emmiting events yang selanjutnya akan segera diproses oleh fungsi handler yang sudah dibuat.
socket.on("details", (...args) => {
// ...
});
3. Broadcasting events
Berfungsi untuk mengirim broadcasting ke semua client yang terhubung kecuali si pengirim broadcasting.
// server-side
io.on("connection", (socket) => {
socket.broadcast.emit("hello", "world");
});
Sulfikardi
Web Design & Web Programming
Halo, saya seorang Web Developer yang terbiasa mengembangkan website
menggunakan HTML, CSS, Javascript, PHP, MYSQL, dan Laravel. Disini saya akan membagikan pengalaman saya dalam membangun dan mengembangan website yang responsif dan dinamis