nodeJS上的JSON问题

时间:2013-06-17 13:56:24

标签: javascript node.js

您好我在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!";
    }

}   
});

1 个答案:

答案 0 :(得分:0)

当您通过websocket发送JSON时,您应该在发送之前将字符串转换为JSON。 这个函数,JSON.stringify(str),可以帮助你。 当然,当服务器收到此消息时,您应该将其更改回阵列。