最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

Node.js的:如何处理与回调和async.js的WebSocket?

IT培训 admin 6浏览 0评论

Node.js的:如何处理与回调和async.js的WebSocket?

我创建一个REST API来存储来自特定摄像机通过TCP发送数据设定。相机通过TCP通信与请求/响应模式。 e.g:您可以发送“获取率\ n”来相机,它响应“100个FPS”,为了让相机的当前帧率。

如何获得数据并将其存储在API?

var command = "rate"; //Array with setting I want to store in my API

function getDataFromCamera(command) { // This function will be iterate in another function
    async.series([
        console.log('Test1'); // console log to test output
        function(callback) {

            CAMERA_TCP_SOCKET.send("get "+command+"\n");
            callback(null,command);
},
     function(callback) {
         console.log('Test2'); // console log to test output
         CAMERA_TCP_SOCKET.onmessage = function(event) {
         callback(null, event.data); // THIS line is the problem. I can't retrieve event.data because i don't know how to callback this variable
     }
}],
     function(err, results) {
         if (err) {
        //Handle the error in some way. Here we simply throw it
             throw err;
         }
         if (results) {
             console.log(results); // expected output : // ['rate','100']
         }
    });
}

目前,我得到这个错误:

Test1
Test2
/Users/maximecongi/Desktop/Hologram/node_modules/async/dist/async.js:966
        if (fn === null) throw new Error("Callback was already called.");
                         ^

Error: Callback was already called.
    at /Users/maximecongi/Desktop/Hologram/node_modules/async/dist/async.js:966:32
    at /Users/maximecongi/Desktop/Hologram/node_modules/async/dist/async.js:3885:13
    at W3CWebSocket.CAMERA_TCP_SOCKET.onmessage (/Users/maximecongi/Desktop/Hologram/core/api.js:91:13)
    at W3CWebSocket._dispatchEvent [as dispatchEvent] (/Users/maximecongi/Desktop/Hologram/node_modules/yaeti/lib/EventTarget.js:107:17)
    at W3CWebSocket.onMessage (/Users/maximecongi/Desktop/Hologram/node_modules/websocket/lib/W3CWebSocket.js:234:14)
    at WebSocketConnection.<anonymous> (/Users/maximecongi/Desktop/Hologram/node_modules/websocket/lib/W3CWebSocket.js:205:19)
    at WebSocketConnection.emit (events.js:188:13)
    at WebSocketConnection.processFrame (/Users/maximecongi/Desktop/Hologram/node_modules/websocket/lib/WebSocketConnection.js:554:26)
    at /Users/maximecongi/Desktop/Hologram/node_modules/websocket/lib/WebSocketConnection.js:323:40
    at process.internalTickCallback (internal/process/next_tick.js:70:11)
[nodemon] app crashed - waiting for file changes before starting...

如何解决我的问题呢?

回答如下:

这是因为你在每封邮件听,看起来像要发送3个命令,我想,每个命令得到响应。此回调首场意甲联赛后不被破坏,其存活。对于我来说,你应该检查响应是这个特定的命令,然后执行有问题的回调。

Node.js的:如何处理与回调和async.js的WebSocket?

我创建一个REST API来存储来自特定摄像机通过TCP发送数据设定。相机通过TCP通信与请求/响应模式。 e.g:您可以发送“获取率\ n”来相机,它响应“100个FPS”,为了让相机的当前帧率。

如何获得数据并将其存储在API?

var command = "rate"; //Array with setting I want to store in my API

function getDataFromCamera(command) { // This function will be iterate in another function
    async.series([
        console.log('Test1'); // console log to test output
        function(callback) {

            CAMERA_TCP_SOCKET.send("get "+command+"\n");
            callback(null,command);
},
     function(callback) {
         console.log('Test2'); // console log to test output
         CAMERA_TCP_SOCKET.onmessage = function(event) {
         callback(null, event.data); // THIS line is the problem. I can't retrieve event.data because i don't know how to callback this variable
     }
}],
     function(err, results) {
         if (err) {
        //Handle the error in some way. Here we simply throw it
             throw err;
         }
         if (results) {
             console.log(results); // expected output : // ['rate','100']
         }
    });
}

目前,我得到这个错误:

Test1
Test2
/Users/maximecongi/Desktop/Hologram/node_modules/async/dist/async.js:966
        if (fn === null) throw new Error("Callback was already called.");
                         ^

Error: Callback was already called.
    at /Users/maximecongi/Desktop/Hologram/node_modules/async/dist/async.js:966:32
    at /Users/maximecongi/Desktop/Hologram/node_modules/async/dist/async.js:3885:13
    at W3CWebSocket.CAMERA_TCP_SOCKET.onmessage (/Users/maximecongi/Desktop/Hologram/core/api.js:91:13)
    at W3CWebSocket._dispatchEvent [as dispatchEvent] (/Users/maximecongi/Desktop/Hologram/node_modules/yaeti/lib/EventTarget.js:107:17)
    at W3CWebSocket.onMessage (/Users/maximecongi/Desktop/Hologram/node_modules/websocket/lib/W3CWebSocket.js:234:14)
    at WebSocketConnection.<anonymous> (/Users/maximecongi/Desktop/Hologram/node_modules/websocket/lib/W3CWebSocket.js:205:19)
    at WebSocketConnection.emit (events.js:188:13)
    at WebSocketConnection.processFrame (/Users/maximecongi/Desktop/Hologram/node_modules/websocket/lib/WebSocketConnection.js:554:26)
    at /Users/maximecongi/Desktop/Hologram/node_modules/websocket/lib/WebSocketConnection.js:323:40
    at process.internalTickCallback (internal/process/next_tick.js:70:11)
[nodemon] app crashed - waiting for file changes before starting...

如何解决我的问题呢?

回答如下:

这是因为你在每封邮件听,看起来像要发送3个命令,我想,每个命令得到响应。此回调首场意甲联赛后不被破坏,其存活。对于我来说,你应该检查响应是这个特定的命令,然后执行有问题的回调。

发布评论

评论列表 (0)

  1. 暂无评论