如果客户端通过套接字连接,如何运行脚本并传递参数?

时间:2012-12-01 13:38:32

标签: javascript node.js sockets

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

 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未定义。这是一个很棒的......

1 个答案:

答案 0 :(得分: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);

这是a blog post with some more information on scope in Javascript