2016-08-02 7 views
0

synchronisieren Ich benutze Knoten js 4.2.6 Version und Verwendung von 1.4.5 socket.io Version.Ich benutze socket.io-Redisis-Modul als der Adapter für socket.io. Ich habe zwei Server mit Port 3000 und 4000. Ich habe Timer hinzugefügt, um die Gesamtzahl der Anschlussbuchsen wie unten zu drucken.Wie kann ich die Gesamtzahl der socket.io-Client in beiden Servern in Knoten js

var socketio = require('socket.io') 
var redis = require('socket.io-redis'), 
io=socketio.listen(server); 
io.adapter(redis({ host: '127.0.0.1', port: 6379 })); 
setInterval(function() { 
       console.log("The total sockets are:::::::::::::", Object.keys(io.sockets.connected).length); 
      }, 5000); 

In einem Server ich richtig Client-Anzahl immer bin, aber in einem anderen erhalte ich 0.How die socket.io Kunden zwischen dem Server synchronisieren können.

+0

Warum haben Sie zwei Server? AFAIK, "socket.io-redisis" synchronisiert keine Sockets/Verbindungen, so dass Sie Clients erreichen können, die mit verschiedenen Servern verbunden sind (die in der Regel "physische" Server sind). – robertklep

+0

Können Sie mir bitte ein Beispiel zur Verfügung stellen, um Clients mit verschiedenen Servern zu verbinden? –

+0

Ich denke, Sie müssen eine gewisse Koordination zwischen Ihren Servern implementieren, wenn Sie die Gesamtzahl der verbundenen Clients verfolgen möchten. – robertklep

Antwort

0

Sie müssen ein Socket-Modell erstellen und die Daten speichern (in Mongo oder Redis ... was auch immer Sie verwenden), so dass beide Server-Instanzen diese Informationen korrekt anfordern und darauf zugreifen können.

0

Bei Verwendung https://github.com/socketio/socket.io-redis gibt es viele Dinge zu tun:

  1. io.adapter.remoteJoin (socket.id, 'room_name_1', function() {}) // fügen Sie einen Client zu einem Raum
  2. io.adapter.allRooms (Funktion (err, rooms) {}) // bekomme alle Raum
  3. io.adapter.clients (Räume, Funktion (Fehler, Clients) {}) // clients.length Anzahl Total Client in alle Zimmer.

Ihr Code io.sockets.connected zählen nur auf einem Server (Computer/Maschine)

Verwandte Themen