2013-06-27 42 views
1

使用異步事件我有一個簡單的RESTify Web服務調用一個函數寫一個命令到串行端口如何的RESTify

var restify = require('restify') 
var com = require("serialport"); 

server.get('/scaleGetWeight/', getScaleWeight); 
server.head('/scaleGetWeight/', getScaleWeight); 

function getScaleWeight(req, res, next) { 
    serialPort.write("S\r\n"); 
    res.send(?); 
} 

串口返回事件

serialPort.on('data', function(data) { 
    console.log(data);; 
}); 

請求將結果返回給客戶的正確方法是什麼?

回答

0

您需要在RESTful getter函數中添加該事件處理程序,並在處理程序中調用res.send()

您仍然需要確定哪些串行端口響應屬於哪個HTTP請求。

如果一次獲得兩個HTTP請求,則只運行一次處理程序將無濟於事;您需要應用程序級邏輯將響應映射到請求。

或者,您可以在寫入串行端口之前,讓每個新請求等待任何掛起的請求完成。 (承諾使得這更簡單)
確保你不會永遠掛起,如果你得到一個錯誤的請求。