0

是否可以运行一些脚本,如果客户端连接传递参数给它,像这样:

 var io = require('socket.io').listen(http);
 io.sockets.on('connection', function (client) {
     console.log('Client connected');
     var notifikacija = function (array) {
         client.emit('populate', array);
     }
 });

 ///////////////////////////////////////////////////////////////////////

 setInterval(function(){
     var array = newArray();
     array[0]='test';
     notifikacija(array);
 }, 2000);

现在它显示错误:notifikacija 未定义。真是一场斗争……

4

1 回答 1

1

notifikacija函数在 io.sockets.on 处理程序的范围内是本地的。您希望它是全局的,以便您可以在 setInterval 中访问它:

var notifikacija = function(){}; // just an empty function, in case it gets called before it has something to do
var io = require('socket.io').listen(http);
io.sockets.on('connection', function(client) {
     console.log('Client connected');
     notifikacija = function(array){ // once the client is available assign the function
         client.emit('populate', array);
     }  
});

setInterval(function(){
    var array = newArray();
    array[0]='test';
    notifikacija(array);
}, 2000);

这是一篇博客文章,其中包含有关 Javascript 范围的更多信息

于 2012-12-01T13:43:02.880 回答