2017-05-02 32 views
0

我試圖創建一個API來發送由套接字獲取的信息。
要從我的套接字獲取信息,我正在使用zmq。
這個想法是當從套接字獲得信息時,將這些信息作爲響應發送到我的API中。下面的代碼假裝這樣做。zmq和express出錯

[...] 
enclaveSocket.on('message', function (message) { 

    res_json.info = message.toString('base64'); 

    res.json(res_json); 
}); 
enclaveSocket.send('chesf:public'); 
[...] 

在第一次請求我的快遞API,回報預期:

{ 
    "organization": "my_org", 
    "info": "AjCWyQeBNeuMnA3nAUrbprxctrdOgZmjDR5Rmuw6LzzMpALspfNapLMoRGPx9YEGFrqrE5vdHKPb/z0S23i8v" 
} 

但在第二請求,我有以下錯誤API崩潰:

events.js:160 
    throw er; // Unhandled 'error' event 
^

Error: Can't set headers after they are sent. 
at ServerResponse.setHeader (_http_outgoing.js:367:11) 
at ServerResponse.header (/home/matteus/keyvault-node/node_modules/express/lib/response.js:725:10) 
at ServerResponse.send (/home/matteus/keyvault-node/node_modules/express/lib/response.js:170:12) 
at ServerResponse.json (/home/matteus/keyvault-node/node_modules/express/lib/response.js:256:15) 
at exports.Socket.<anonymous> (/home/matteus/keyvault-node/routes/keys.js:58:21) 
at emitOne (events.js:101:20) 
at exports.Socket.emit (events.js:188:7) 
at exports.Socket.Socket._flushRead (/home/matteus/keyvault-node/node_modules/zmq/lib/index.js:636:10) 
at exports.Socket.Socket._flushReads (/home/matteus/keyvault-node/node_modules/zmq/lib/index.js:676:23) 
at Object._zmq.onReadReady (/home/matteus/keyvault-node/node_modules/zmq/lib/index.js:297:10) 

這它。

回答