Autor Zpráva
Slark
Profil *
Dobrý den,

chtěl bych si implementovat jednoduché "ukazovátko" online návštěv na webu. Bohužel nedaří se mi to zprovoznit na více webech najednou tak, že každý web má své vlastní statistiky (i vlastní administraci kde chci aby statistika byla vidět). Myslel jsem, že mi v tomto pomůžou rooms, ale nějak se mi to nedaří. Níže zasílám kus kódu.

client.js - WEB A
var socket = io("ip:port", {reconnection: false});

  socket.on('connect', function() {
       socket.emit('join', 'room1'); 
  });    

    var visitorData = {
        referringSite: document.referrer,
        page: location.pathname
    }
    socket.emit('visitor-data', visitorData);
 

server.js
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);  
var request = require('request');

var visitorsData = {};
app.set('port', (process.env.PORT || 3000));

app.get('/', function(req, res){
  res.sendFile(__dirname+'/test.html');
});

io.sockets.on('connection', function(socket){  

socket.on('join', function(room) {
    socket.join(room);
    socket.room = room; 
    io.to(room).emit('updated-stats', computeStats());
    console.log("User Joined the room: "+socket.room);
});
.... zde je toho více, ale toto by mělo stačit.

No takto by to fungovalo, ale pokud chci přidat další web, který chci "sledovat", tak se mi statistiky "míchají" dohromady.

client.js - WEB B
stejné jako client.js WEB A akorát se liší řádek - socket.emit('join', 'room2'); //kde jsem si myslel, že díky join na room2 budu dostávat vlastní statistiky.

V adminu webu mám pak
var socket = io("server:port");
socket.on('connect', function() {
    socket.emit('join', 'room1'); //nebo room2 záleží z jakého webu bych chtěl získávat přehled návštěvníků online
});    

socket.on('updated-stats', function(data) {
    console.log(data.pages);
    $(".online").html(data.activeUsers);
});    

Nevíte prosím jak zařídit aby se statistika nemíchala ale byla odděleně pro každý room?

Ještě doplním, že pokud se joinu na web A tak v adminu webu A vidím statistiky správně. dokonce když přejdu na web B statistiky v administraci webu A zůstávájí správné. Ve chvíli kdy jsem zároveň na webu B a refreshnu web A tak až v tuto chvíli se mi návštěvník z webu B přičte do statistiky administrace webu A.

Pokud by někdo věděl, tak mockrát děkuji.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: