我有一个承诺,可以使用一些配置数据来解析JSON对象。我想在HTML客户端中按下“发送配置”按钮后访问此数据。通过nodejs中的websocket连接完成通信。因此,websocket服务器从客户端接收到一条消息,提示“发送配置”,并且服务器应该以配置响应。
showMsg = function (MSGOBJ) {
var parsedOBJ = JSON.parse(MSGOBJ);
//console.log(parsedOBJ.content);
for (var i = 0; i < connections.length; i++) {
switch(parsedOBJ.type) {
case "text":
console.log("Received: " + parsedOBJ.content)
connections[i].sendUTF('{ "type":"text", "content":"Server ready."}')
break;
case "config":
console.log("Received:1 " + parsedOBJ.content)
console.log("Sending config" )
var getConfig = KRequests.getKConfig;
var configOBJ;
getConfig.then(function(result) {
configOBJ = result
});
connections[i].send('{ "type":"config", "content":'+JSON.stringify(configOBJ)+'}');
break;
}
}
}
我知道如果我在链外使用configOBJ将会是不确定的,但是只是为了让您了解我想做什么。并且如果我在链中移动send(),也会导致此错误:“ UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性'send'”
答案 0 :(得分:0)
您有两个问题,一个是应该使用:
grant codeBase "file:/C:/somepath/api/" {
...
};
另一个是:
getConfig.then(function(result) {
console.log(connections[i])
connections[i].send('{ "type":"config", "content":'+JSON.stringify(configOBJ)+'}');
});
应为:
for (var i = 0; i < connections.length; i++) {
或者如果您没有for (let i = 0; i < connections.length; i++) {
(如果您使用的是支持ES5以上的最新节点),则应该这样做。您将必须使用这样的IIFE:
let