使用Socket.io将json数据发送到Node.js

时间:2018-03-02 12:54:58

标签: jquery html json node.js socket.io

我正在使用socket.io技术在Node.js中做一个项目。这是我在html中编写的代码:

<script type="text/javascript" src="data.json"></script>
<script type="text/javascript">
    var mydata = JSON.parse(data);

    var markers = mydata.map(function (location) {
        return {
            title: location.yer,
            lat: location.lat,
            lng: location.lng
        };
    });

    $(document).ready(function () {

        var socket = io.connect("http://localhost:1234");
        socket.emit("test", mydata);

        socket.on("test", function (data) {

            //$("body").append("Name : " + data.value1 + ", Age : " + data.value2);
            //$("body").append("<br>");
        });

    });

这是我在node.js端的server.js上编写的代码:

var io = require("socket.io").listen(server);

io.sockets.on('connection', function (socket) {

console.log("User Connected");

socket.on("test", function (data) {

    console.log("Yer : " + data.value1 + ", Lat : " + data.value2 + ", Long : " + data.value3);
});

socket.on("disconnect", function () {

    console.log("User Disconnected");
});
});

当我第一次打开html页面时,我从同一文件夹中的data.json文件中获取数据以及html。获取后,我可以将其映射到JavaScript并将其分配给mydata变量。我将此变量发送到Node.js的服务器端,并使用我在html中使用jQuery编写的代码。与Node.js的连接工作正常,但是当我将这个json数据发送到node.js时,当我打印发送到控制台的数据时,我看到消息&#34; Location:undefined,Lat:undefined,Long :undefined&#34;。我不明白我在哪里讨厌。你能救我吗?

1 个答案:

答案 0 :(得分:0)

因此服务器websocket处理程序接收一个对象数组,但是您尝试将其解析为就像它是一个对象一样。试试这个,请:

socket.on("test", function (data) {
    data.forEach(obj => {
        console.log("Yer : " + obj.yer + ", Lat : " + obj.lat + ", Long : " + obj.lng);
    })
});