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 is not defined. かなりの苦戦です…

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 に答える