首页 > 解决方案 > Websockets - 阻止在消息上分配的变量发生变化

问题描述

我正在使用带有 node.js 的 ws 库。我在 node.js Web 应用程序和浏览器之间有一个 websocket 连接。我通过 websocket 向 web 应用程序发送消息来获取浏览器“请求”数据。Web 应用程序解析消息以确定浏览器想要什么。因此,如果“query_name”是“member_DOB”,则 Web 应用程序将返回成员的出生日期。你明白了。

为此,我需要将传入的“query_name”分配给我的网络应用程序上的一个变量。问题是,如果我同时收到多条消息,则将变量分配给第一个“query_name”,但在函数完成运行之前,将变量重新分配为等于下一条传入消息“query_name”。

如何将变量链接到传入的每条消息并防止其更改?

var query_name;
const WebSocket = require('ws');
const wss = new Websocket.Server({server:httpsServer});
ws.on('message', function (data) {

    query_name = JSON.parse(data)[0];

    // do a whole bunch of stuff with query_name;

}

标签: variableswebsocketcallbackbindws

解决方案


“函数在 JavaScript 中充当闭包,因此创建了一个范围” https://developer.mozilla.org/en-US/docs/Glossary/Scope

因此,在函数内部定义 var 或 const,以便它可以绑定到被调用函数的特定实例。

const WebSocket = require('ws');
const wss = new Websocket.Server({server:httpsServer});
ws.on('message', function (data) {

    const query_name = JSON.parse(data)[0];

    // do a whole bunch of stuff with query_name;

}

推荐阅读