Socket.io n’émet pas de valeur

J’ai des problèmes pour recevoir les valeurs émises par socket.io, je ne comprends pas où est le problème. Ici, je publie le code, aidez-moi à résoudre le problème.

var express = require('express'); var app = express(); var http = require('http').Server(app); var io = require('socket.io')(http); var bodyParser = require('body-parser'); var path = require('path'); var fs = require('fs'); var spawnSync = require('child_process').spawnSync; .... app.post('/loadImage',upload.any(),function(req, res) { fs.readFile('/home/pathtofile/file.json','utf8',function(err,data){ if(err){ console.log(err); }else{ //console.log(data); var precjson = JSON.parse(data); var loaded_filename = precjson.Filename; io.emit('emitfilename',{loaded_filename}); } }) } http.listen(8080,'0.0.0.0',function(){ console.log('listening on 8080'); }) 

Et voici mon code où je reçois les valeurs émises:

   var socket = io.connect('http://localhost:8080'); socket.on('emitfilename',function(data){ //console.log(data); var li = document.createElement('li'); var filename = document.createElement('h4'); filename.textContent = 'File Name:' + data.filename; li.appendChild(filename); document.getElementById('filenameoutput').appendChild(li); });  

Au lieu d’obtenir un nom de fichier, je deviens indéfini . Est-ce que quelqu’un peut m’aider s’il vous plait.

Vous ne pouvez pas utiliser la variable “io” pour émettre des données. Vous pouvez utiliser le socket actuel du client qui vient de se connecter pour envoyer des données:

 io.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); }); 

Ou utilisez io.sockets pour émettre vers tous les sockets

 io.sockets.emit('users_count', clients); 

J’espère que cela résoudra votre problème! Merci !