Bonjour,

je cherche à avoir 1 seul et unique socket par machine, même si lutilisateur ouvre 36 fenêtres !
c'est possible ? si oui, comment ?

Actuellement, si utilisateur "A" ouvre 3 liens de mon site, il a 1 sockets par fenêtre ( donc 3 socket ouvert ) , et je me dis niveau perf ce n'est pas terrible !

6 réponses


Etant donné que j'ai eu exactement le même problème et pensant avoir trouvé la solution.
Quand tu emit le socket, fait le directement depuis depuis l'instance de SocketIO :
Si côté front :

var SocketIO = io('http://localhost');

SocketIO.on('connection', function (Socket) {
    Socket.emit('welcome', 'Welcome !');
});

SocketIO.emit('Mon-Event', {data: 'test'});

Si côté back :

var SocketIO = require('socket.io');

SocketIO.on('connection', function (Socket) {
    Socket.emit('welcome', 'Welcome !');
});

SocketIO.emit('Mon-Event', {data: 'test'});
kaloutch
Auteur

actuellement j'ai cela

        var socket = io.connect("https://monsite.com:25101", {secure: true});

        /* Connection au tchat */
        socket.on('startchat', function(i) {
            console.log('function > startchat');
            socket.emit('session log in', { id:user_id , token:token } );
        });

et si je change ca comme cela ...

        var socket = io("https://monsite.com:25101", {secure: true});

ca marcherais ? ( jai pas test )

J'aurais plus fait comme ça moi

    var socket = io.connect("https://monsite.com:25101", {secure: true});

        /* Connection au tchat */
        socket.on('connection', function(userSocket) {
            // Lorsque je rejoins le chat, j'envoie mes informations
            userSocket.on('startchat', function(data) {
                userSocket.emit('session log in', { id:user_id , token:token } );
            });            
        });

        socket.on('message', function(data) {
            // traitement pour afficher le message reçus
        });
kaloutch
Auteur
        socket.on('startchat', function(usersocket) {
            console.log(usersocket);
            console.log('function > startchat');
            socket.emit('session log in', { id:user_id , token:token } );
        });

console.log(usersocket); me retourne 1

Ce sont les data que tu envoies depuis lautre côté

kaloutch
Auteur

ok je comprends mon erreur pour ca

coté serveur


var socketio = require('socket.io');
var io;

exports.chatInit = function(server)
{
  io = socketio.listen(server);
  io.set('log level', 2);
  io.sockets.on('connection', function(socket)
  {
     socket.emit('startchat', 1 );
  });
}

donc je dois changer ca ...

     socket.emit('startchat', socket );