您好我在javascript传递给NodeJS的参数中遇到了问题。
当我在函数内创建对象时:
var obj = {host: 123,
port: 456}
并给ws.send(obj.host)它返回123。
但是,当我执行以下操作时:
function a(param) {
var obj = param;
ws.send (obj.host);
}
a({host: 123, port: 456});
它返回我未定义
代码是:
var http = require("http");
var Sequelize = require("sequelize");
var mysql = require('sequelize').mysql;
var WebSocketServer = require('ws').Server;
var server = http.createServer(function(request, response) {
response.end("WS port:1337");
});
server.listen(1337, function() { });
var wss = new WebSocketServer({ server: server });
wss.on('connection', function(ws) {
ws.on('message', function(message) {
ws.send(exec(message));
});
function exec(msg) {
var cmd = msg.split(':')[0].toLowerCase(); //Get the first string before ':' and all cmd begin with 3 letters.
var message = '';
for(i=4; i<msg.length; i++) {
message += msg[i];
}
console.log("Cmd type: " + cmd);
switch(cmd) { //send 'msg:' type the message after ':'.
case 'msg' :
return message;
case 'sql' : //send to another function the object message like {host: 'x.x.x.x', port: xxxx, user...}
sql(message);
return 'res:';
break;
default:
return "not defined!";
}
}
});
答案 0 :(得分:0)
当您通过websocket发送JSON时,您应该在发送之前将字符串转换为JSON。 这个函数,JSON.stringify(str),可以帮助你。 当然,当服务器收到此消息时,您应该将其更改回阵列。