Socket.io不是排放值

我在接收由socket.io发出的值有问题,我不明白问题在哪里。 在这里张贴的代码,请帮我解决这个问题。

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

这里是我的代码,我正在接收发射值:

  <script type="text/javascript"> 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); }); </script> 

而不是获取文件名称,我越来越undefined 。 谁能帮帮我吗。

你不能使用“io”variables来发送数据。 您可以使用刚刚连接的客户端的当前套接字发送数据:

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

或者使用io.sockets发送到所有套接字

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

希望它能解决你的问题! 谢谢 !