nodeJS上的JSON问题

JSON problema on nodeJS

本文关键字:问题 JSON 上的 nodeJS      更新时间:2023-09-26

你好,我有一个问题,在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});

返回undefined

代码是:

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!";
    }
}   
});

当你通过websocket发送JSON时,你应该在发送之前将字符串转换为JSON。JSON.stringify(str)函数可能会对您有所帮助。当然,当服务器接收到此消息时,您应该将其更改回array。