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 !
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'});
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
});
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
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 );