2016-05-18 13 views
0

私はsocket.ioを使ってインタラクティブグラフアプリを作成しています。サーバー側にグラフ変数があります。ユーザーがページをロードすると、テストイベントがサーバーに送信され、サーバーが変数を設定してユーザーに返します。私はノードをドラッグするための2番目のイベントを持っていますが、ノードをドラッグしようとすると、グラフのノードとリンク変数が定義されていないとサーバーから通知されます。Socket.IO undefiend変数

io.sockets.on('connect', function(socket){ 

ない、それは動作しますが、それがない理由を確認してください。これで

io.on('connect', function(socket){ 

var express = require('express'), 
    app = express(), 
    http = require('http'), 
    socketIo = require('socket.io'); 
var server = http.createServer(app), 
    io = socketIo.listen(server); 
var graph = {nodes : [], links : []} 

server.listen(8080, function(){ 
    console.log('server is listening on localhost:8080'); 
}); 

app.use(express.static(__dirname + '/')); 

io.on('connect', function(socket){ 

    // dump some test data 
    socket.on('test', function(){ 
    // this just creates a few nodes in an array 
    var data = { ... }  
    graph = data; 
    io.emit('test', graph); 
    }); 

    socket.on('eventNodeDragStart', function(index){ 
    console.log('event node drag start: ' + index); 

    // undefiend, the graph.nodes is empty here 
    console.log(graph.nodes[index] + "\n\n"); 

    // cannot read property of undefined 
    // also missing error handler on 'socket' 
    if(graph.nodes[index].locked) return; 

    graph.nodes[index].locked = true; 

    io.emit('eventNodeDragStart', index); 
    }); 
}); 

答えて

0

は、この行を置き換えることで、問題を解決しました。

関連する問題