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