deux fenêtres, un socket ( io.connect )

Par kaloutch, il y a 8 ans


Javascript NodeJS

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

Kareylo, il y a 8 ans

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, il y a 8 ans

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 )

Kareylo, il y a 8 ans

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, il y a 8 ans
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

Kareylo, il y a 8 ans

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

kaloutch, il y a 8 ans

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 );