2013-08-21 16 views
0

我使用Node.js,Express和socket.io。Socket.io无法更改socket中的全局变量

我不能在socket.on函数中更改全局变量。

这很奇怪,因为我设法做之前,但现在它错误,我不知道为什么。 有一个简单的答案,但它不工作:16270997

你能帮助我吗?


服务器:

var express = require('express'); 
    var app = express.createServer(); 
    app.use(express.static(__dirname + '/public/tank/')); 
    var server = app.listen(8080); 

    var socket = require("socket.io"); 
    var io = socket.listen(server); 

    io.sockets.on('connection', function (socket) { 
     socket.emit('con'); 
    }); 

客户:

<script type="text/javascript" src="/socket.io/socket.io.js"></script> 
<script type="text/javascript"> 
var socket = io.connect(); 
var id = 1; 

socket.on('con', function() { 
    id++; 
    alert(id); // it displays 2 
}); 

alert(id); // it displays 1 

</script> 

回答

3

你甚至con收到的消息获取并id++被执行之前触发外alert

您可以通过

var socket = io.connect(); 
var id = 1; 

socket.on('con', function() { 
    id++; 
    alert(id); // it displays 2 
    printGlobalIdvalue(); // prints global variable 
}); 

function printGlobalIdvalue() { 
    alert(id); // it also displays 2 
} 
+1

哇检查此谢谢! – Getzel