https://www.npmjs.com/package/socket.io adresinde aslında yeterince açık.
mantığı basit aslında. server side ve client side. 2 şekilde ele alacaksınız.
server'a yukarıdaki paketi kurun.
dökümandaki şu ifade server side'dır
const server = require('http').createServer();
const io = require('socket.io')(server);
io.on('connection', client => {
client.on('event', data => { /* … */ });
client.on('disconnect', () => { /* … */ });
});
server.listen(3000);
3000 portuna sahip bir server kuruyorsunuz. http://IP:3000 gibi. IP yerine domainde olabilir.

Sonra websayfanızda (client side)
<script src='https://IP:3000//socket.io/socket.io.js'  onload='baglan()'></script>
<script>
var socket={connected:false}
function baglan() {
    var url='https://IP:3000';
    var options={ 'reconnect': true,
    reconnectionDelay: 500,
    reconnectionAttempts:"Infinity,reconnectionDelayMax:1250}
    socket = io.connect(url,options);
    socket.on("connect",function() {
        console.log("Socket Bağlandı!")
    })
}
</script>
Mesaj göndermek için yukarıdaki koda göre:
server side'ta client.emit("dinleyici","mesaj")
client side'ta socket.emit("dinleyici","mesaj")
mesajı almak için ise tabii listener lazım.
server side'ta yukarıdaki gibi:
client.on('event', data => { /* … */ }); satırının altına üstüne farketmez ama 'connection' listenerın içine.
client.on('dinleyici', data => { /* … */ }); data gelen mesajdır.
bu client side içinde aynı
socket.on("dinleyici", data => {})

gibi. fikir vermiştir umarım. dikkat etmen gereken durumlar 3000 portunu açmak. secure bağlantı için ben letsenrypt ile pfx oluşturuyorum.

biraz inceleyin, kurcalayın, karıştırın. takıldığınız yerde bilgim dahilinde buradan yardımcı olmaya çalışırım.