socket.io / paramètres de connexion

Dans mon node.js /Express.js app, j'ai besoin de passer des paramètres avec le support.io connexion (vu dans un autre post).

Sur le côté client, j'ai quelque chose comme :

modifier

var socket = io.connect('/image/change', {query:"name=my_img_name"});
var siofu = new SocketIOFileUpload(socket);

siofu.listenOnInput(document.getElementById("change_image_inpt"));

Sur le côté serveur :

modifier

io.of('/image/change')
  .on('connection', function (socket) {
  console.log('log input param : ' + socket.handshake.query.name);
});

Mais rien dans la console.

Est-il un autre moyen pour y parvenir ?

edit2

C'est le code complet pour le client :

$(document).ready(function() {
//icon_action_modal
$('.icon_actions').on('click', function() {
//set icon preview
$('#icon_action_modal_icon_preview').html('<img src="/upload/icon/' + $(this).data('icon') + '.png" />');
//set icon to delete
$('#icon_name').val($(this).data('icon'));
//set Change icon socket
var socket = io.connect('/icon_sets/change', {query:"name=my_img_name"});
var siofu = new SocketIOFileUpload(socket);
siofu.listenOnInput(document.getElementById("change_icon"));
//Do something when a file is uploaded
siofu.addEventListener("complete", function () {
$('.overlay').hide();
});
//display loader window
socket.on('displayOverlay', displayOverlay);
//display
socket.on('displayIconImage', function (data) {
$('#iconset_render').append('<div class="icon"><img src="' + data.path + '" /></div>');
});
socket.on('setIconsetArray', function (data) {
var iconset = ($('#iconset_array').val()) ? JSON.parse($('#iconset_array').val()) : [];
iconset.push(data.iconName);
$('#iconset_array').val(JSON.stringify(iconset));
deleteIcon($('#icon_name').val());
//close modal
$('#icon_action_modal').modal('hide');
});
});
$('#icon_action_modal_delete_icon').on('click', function() {
deleteIcon($('#icon_name').val());
//close modal
$('#icon_action_modal').modal('hide');
});
}); //end document.ready

Et le code complet pour le côté serveur :

io.of('/icon_sets/change')
.on('connection', function (socket) {
console.log('log input param : ' + socket.handshake.query.name);
functions.socketImageTransfer(socket, 'icon', 65, 65);
});

Avec le socketImageTransfer fonction :

module.exports.socketImageTransfer = function(socket, type, width, height, name) {
var socketioFileUploadServer    = require('socketio-file-upload');   //upload files by socket
var config                      = require(__dirname + '/config/config.json');
var easyimg                     = require('easyimage');                 //crop - resize image
var fs                          = require('fs');                        //file system access
//Make an instance of socketioFileUploadServer and listen on this socket:
var uploader = new socketioFileUploadServer();
uploader.dir = config.tmpDir;
uploader.listen(socket);
//Do something when a file is saved:
uploader.on('saved', function (event) {
console.log('Original ' + type + ' saved');
//resize and rename image with a unique id
var newName;
if (!name) {
newName = Math.random().toString(36).substr(2, 9) + '_' + type + '.png';
} else {
newName = name;
}
var fileName = event.file.name.replace(//g, '_');
easyimg.rescrop({src: config.tmpDir + fileName, dst: config.uploadDir + type + '/' + newName, width: width, height: height}, function (err, image) {
if (err) return console.log(err);
console.log(type + ' resized and cropped: ' + image.width + ' x ' + image.height);
//image is uploaded - resized - croped, now display it
socket.emit('display' + ucfirst(type) + 'Image', {path: '/upload/'+ type + '/' + newName});
//remove original from file system
fs.unlink(config.tmpDir + fileName, function () {
if (err) throw err;
console.log('Original ' + type + ' removed');
});
//additionnal action
switch(type) {
case 'icon':
//send path to generate iconset_json
socket.emit('setIconsetArray', {iconName: newName});
break;
}
});
});
uploader.on('start', function (event) {
console.log('Client start upload');
socket.emit('displayOverlay');
});
//Error handler:
uploader.on('error', function (event) {
console.log("Error from uploader", event);
});
};

Remercie de votre aide

Si il n'y a rien dans la console, votre connection gestionnaire ne pas le feu à tous, parce qu'au moins undefined devrait être dans la console. Vous avez probablement une erreur dans un autre lieu avec un message d'erreur que j'ai décrit dans ma réponse.
Votre code semble fonctionner sauf une chose: vous déclarez socket, mais passer socket2 à SocketIOFileUpload constructeur.
Oui, désolé, Dans mon code le vrai nom de la socket est " socket2. Mais comme je l'ai dit dans votre réponse, ce code est exécuté AVANT que je veux ... c'est exécutée lorsque je démarre le serveur. Et à ce moment, le fichier client qui contenu le code socket n'est pas oui...
Je crois qu'il est exécuté sur le serveur de commencer parce que vous avez une page ouverte dans votre navigateur, et de la Prise.IO essaie de se reconnecter à chaque n secondes. Lorsque le serveur est démarré, rebranchez devient un succès et votre connection gestionnaire des feux (qui généralement se déclenche lorsque la connexion entre le client et le serveur est établie avec succès). Il est étrange que console.log sorties underfined. J'ai essayé votre code et pour moi fonctionne très bien avec les deux Socket.IO 0.9 et 1.0. Pouvez-vous montrer votre code, parce que je pense que le problème est dans un autre endroit.
Avez-vous essayé avec la prise.io upload de fichier du module ? Peut-être que le problème est avec ce paquet ... je utiliser socket.io 0.9. S'il vous plaît, voir le post de mise à jour. J'ai ajouté le client - serveur de code. Je n'ai pas ajouté la partie HTML. C'est juste une fenêtre modale ouvert par un clic sur une image que vous souhaitez modifier. <a title="Icon Actions" class="icon_actions" data-toggle="modal" href="#icon_action_modal" data-icon="<%= icon %>">. TY pour votre aide

OriginalL'auteur ceadreak | 2014-08-01