Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript nodejson到客户端处理 我有一个C++和java的完全工作的VPS媒体服务器,允许设备(英特尔和Android)播放视频播放列表并即时更新。_Javascript_Node.js - Fatal编程技术网

Javascript nodejson到客户端处理 我有一个C++和java的完全工作的VPS媒体服务器,允许设备(英特尔和Android)播放视频播放列表并即时更新。

Javascript nodejson到客户端处理 我有一个C++和java的完全工作的VPS媒体服务器,允许设备(英特尔和Android)播放视频播放列表并即时更新。,javascript,node.js,Javascript,Node.js,我还用Java编写了一个设备管理器,使用标准UI。这就是问题所在,它在移动设备上不起作用 所以,我已经开始在NodeJS服务器上工作,使用“socket.io”和“net”。到目前为止一切正常。节点服务器与Java服务器连接,Java服务器将其库转换为JSON字符串,节点服务器(显然)获得正确的数据。至少这是控制台日志上显示的内容 我遇到的问题是,当客户端浏览器接收到这些数据时,我被卡住了 服务器设置为: Java-设备服务器(在其自己的端口上) Java-设备管理器(自己的端口) C++-

我还用Java编写了一个设备管理器,使用标准UI。这就是问题所在,它在移动设备上不起作用

所以,我已经开始在NodeJS服务器上工作,使用“socket.io”和“net”。到目前为止一切正常。节点服务器与Java服务器连接,Java服务器将其库转换为JSON字符串,节点服务器(显然)获得正确的数据。至少这是控制台日志上显示的内容

我遇到的问题是,当客户端浏览器接收到这些数据时,我被卡住了

服务器设置为:

  • Java-设备服务器(在其自己的端口上)

  • Java-设备管理器(自己的端口)

  • C++-更快地传输加密数据

  • 现在是一个节点服务器,它与“2”进行通信(看起来很完美)

  • 我会尽量让代码片段变得漂亮

    这将创建发送到节点服务器的JSON(看起来)在mo上运行良好。它创建JSON字符串并通过TCP本地主机连接发送

    private void get_videos(BufferedReader br, BufferedWriter bw)
            throws IOException {
        //bw.write("[{name:'Carl'}]");
        //bw.flush();
        JSONArray media = new JSONArray();
        
        synchronized (dev_server2.deviceServer_Main.library.media_lock) {
            
            JSONArray areaArray = new JSONArray();
            
            for (Area area : dev_server2.deviceServer_Main.library.media) {
                
                //JSONObject newArea = new JSONObject();
                //newArea.put("area", area.name);
                
                //areaArray.put(newArea);
                areaArray.put(area.name);
                
                JSONArray catArray = new JSONArray();
                
                for (Category cat : area.category) {
                    
                    catArray.put(cat.name);
                    JSONArray vidArray = new JSONArray();
                    
                    for (VideoFile vid : cat.videos) {
                        
                        JSONObject vidObject = new JSONObject();
                        
                        vidObject.put("name", vid.name);
                        vidObject.put("description", vid.description);
                        vidObject.put("watershed", vid.watershed);
                        
                        vidArray.put(vidObject);
                    }
                    
                    catArray.put(vidArray);
                }
                
                areaArray.put(catArray);
            }
            media.put(areaArray);
            bw.write(areaArray.toString());
        }
        
        //bw.write(areaArray.toString());
        bw.flush();
    }
    
    在接收数据并正确记录数据的节点端:

    const global = require("../global/global.js");
    const node_port = 2000;
    
    function dm_get_videos(socket) {
        videos = [];
        
        client = new global.net.Socket();
        client.connect({port: node_port, host: 'localhost'},
        function() {
            console.log("dm_get_videos");
            client.write("get_videos\n");
        });
        
        client.on("data", function(data) {
            console.log("TCP socket data: " + data);
            socket.emit("get_videos", data);
            //socket.emit("get_videos", JSON.stringify(data));
        });
        
        client.on("end", function() {
            console.log("TCP socket disconnected");
        });
        
        client.on("error", function() {
            console.log("ERROR: getting videos");
        });
    }
    
    module.exports = {
        get_videos : dm_get_videos
    };
    
    这将在控制台日志中给出输出:(我将在编辑中整理)

    在客户端(浏览器),我被卡住了

    socket get_videos: [object ArrayBuffer]
    landing.js:145 data: 20
    VM1960:1 Uncaught SyntaxError: Unexpected token o in JSON at position 1
        at JSON.parse (<anonymous>)
        at r.<anonymous> (landing.js:146)
        at r.emit (index.js:83)
        at r.onevent (index.js:83)
        at r.onpacket (index.js:83)
        at r.<anonymous> (index.js:83)
        at r.emit (index.js:83)
        at r.ondecoded (index.js:83)
        at a.<anonymous> (index.js:83)
        at a.r.emit (index.js:83)
    
    如果有人能帮助我在客户端处理这些数据,那就太好了。我还尝试将其作为原始数据发送并转换回原始数据。我习惯于使用C++和java。我经常使用Javascript和JSON,但我现在不知道如何访问这个数组

    提前谢谢

    编辑1:JSON数据的输出

    [
        "Home",
        [
            "Home",
            [
                {
                    "watershed": false,
                    "name": "Runcorn-TheUnion-FridayNEW.mp4",
                    "description": ""
                },
                {
                    "watershed": false,
                    "name": "Runcorn-TheUnion-LADIESdartsNEW.mp4",
                    "description": ""
                },
                {
                    "watershed": false,
                    "name": "Runcorn-TheUnion-MondayDominoesNEW.MP4",
                    "description": ""
                },
                {
                    "watershed": false,
                    "name": "Runcorn-TheUnion-Pool.mp4",
                    "description": ""
                },
                {
                    "watershed": false,
                    "name": "Runcorn-TheUnion-SaturdayKaraokeNEW.mp4",
                    "description": ""
                },
                {
                    "watershed": false,
                    "name": "Runcorn-TheUnion-SkySportsNEW.mp4",
                    "description": ""
                },
                {
                    "watershed": false,
                    "name": "Runcorn-TheUnion-SundayBingoNEW.mp4",
                    "description": ""
                },
                {
                    "watershed": false,
                    "name": "Runcorn-TheUnion-TuesdayUnionNEW.mp4",
                    "description": ""
                },
                {
                    "watershed": false,
                    "name": "Runcorn-TheUnion-WednesdayQuizNEW.mp4",
                    "description": ""
                },
                {
                    "watershed": false,
                    "name": "Runcorn-TheUnion-WelcomeUnion.mp4",
                    "description": ""
                }
            ]
        ]
    ]
    
    console.log(res)的输出;显示:

    编辑2:在托马拉克的帮助下(干杯伙伴)

    现在,我使用

    console.log(new TextDecoder().decode(res));
    

    如何遍历上述数据?我只使用基本的JSON数据,而不使用JSON中的多嵌套数组。java和C++很好,但是这个??/p>代码>意外令牌O/< >这通常发生在一个对象被用作字符串时,所以输出是代码> [object object ] < /Cord>这是无效的JSONnote…<代码>数据=”;数据+=res只是
    data=”“+res
    这很可能就是问题所在
    socket.emit(“get_videos”,JSON.stringify(data))-您的数据已经是JSON。再次将其放在JSON.stringify()上是一个错误。目前,至少我得到了一个对象。我知道的意外令牌错误。我现在需要实际解析数据本身,这是我很难做到的。我将尝试整理JSON字符串,我认为这将有助于解决我的问题。(只是想找一个像样的编辑器来做)@Tomalak使用
    console.log(newtextdecoder().decode(res))已经完成了这个任务。现在开始解析数据。该死的。。。资料来源:
    
    [
        "Home",
        [
            "Home",
            [
                {
                    "watershed": false,
                    "name": "Runcorn-TheUnion-FridayNEW.mp4",
                    "description": ""
                },
                {
                    "watershed": false,
                    "name": "Runcorn-TheUnion-LADIESdartsNEW.mp4",
                    "description": ""
                },
                {
                    "watershed": false,
                    "name": "Runcorn-TheUnion-MondayDominoesNEW.MP4",
                    "description": ""
                },
                {
                    "watershed": false,
                    "name": "Runcorn-TheUnion-Pool.mp4",
                    "description": ""
                },
                {
                    "watershed": false,
                    "name": "Runcorn-TheUnion-SaturdayKaraokeNEW.mp4",
                    "description": ""
                },
                {
                    "watershed": false,
                    "name": "Runcorn-TheUnion-SkySportsNEW.mp4",
                    "description": ""
                },
                {
                    "watershed": false,
                    "name": "Runcorn-TheUnion-SundayBingoNEW.mp4",
                    "description": ""
                },
                {
                    "watershed": false,
                    "name": "Runcorn-TheUnion-TuesdayUnionNEW.mp4",
                    "description": ""
                },
                {
                    "watershed": false,
                    "name": "Runcorn-TheUnion-WednesdayQuizNEW.mp4",
                    "description": ""
                },
                {
                    "watershed": false,
                    "name": "Runcorn-TheUnion-WelcomeUnion.mp4",
                    "description": ""
                }
            ]
        ]
    ]
    
    [object ArrayBuffer]
    
    console.log(new TextDecoder().decode(res));