Socket.io没有发光价值

时间:2016-09-01 06:38:31

标签: javascript node.js sockets express 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>

我没有获取文件名,而是未定义。任何人都可以帮助我。

1 个答案:

答案 0 :(得分:1)

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

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

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