Javascript NodeJS WebSocket中的局部持久变量

Javascript NodeJS WebSocket中的局部持久变量,javascript,node.js,websocket,Javascript,Node.js,Websocket,我试图为每个WebSocket连接创建持久变量player,如下所示: Server.on('request', function(request) { const WSCon = request.accept(null, request.origin); var player = "none"; WSCon.on('message', function(message) { if (data.action == 0) HandleRo

我试图为每个WebSocket连接创建持久变量
player
,如下所示:

Server.on('request', function(request) {
    const WSCon = request.accept(null, request.origin);
    var player = "none";
    WSCon.on('message', function(message) {
        if (data.action == 0) HandleRoomEnter(player);
        if (data.action == 1) HandleReadyness(player);
    });
});

function HandleRoomEnter(player) {
    player = "Conan";
    console.log("setting: "+player);
}
function HandleReadyness(player) {
    console.log("getting: "+player);
}
但是,我的输出是:

setting: Conan
getting: none
问题在哪里


谢谢,

这是正确的方法:


Server.on('request', function(request) {
    const WSCon = request.accept(null, request.origin);
    let player = "none";
    function HandleRoomEnter(player) {
        player = "Conan";
        console.log("setting: "+player);
    }
    function HandleReadyness(player) {
        console.log("getting: "+player);
    }

    WSCon.on('message', function(message) {
        if (data.action == 0) HandleRoomEnter(player);
        if (data.action == 1) HandleReadyness(player);
    });
});

另外,请使用let或const代替var。

谢谢,这并不完全是正确的方法,但它可以帮助我找到它。我必须从函数中删除“player”参数。而不是“HandleRoomEnter(player)”->“HandleRoomEnter()。在那之后,它成功了。非常感谢。