2013-08-21 44 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