Socket.io no está emitiendo valor

Tengo problemas para recibir los valores emitidos por socket.io, no estoy llegando a donde está el problema. Aquí estoy publicando el código por favor ayúdame a resolver el problema.

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

Y aquí está mi código donde estoy recibiendo los valores emitidos:

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

En lugar de obtener el nombre del archivo, me estoy volviendo indefinido . Alguien puede ayudarme por favor.

No se puede utilizar la variable “io” para emitir datos. Puede usar el socket actual del cliente que acaba de conectarse para enviar datos:

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

O use io.sockets para emitir a todos los sockets

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

Espero que resuelva tu problema! Gracias !