在node.js中如何通过自定义事件将app.post发送到客户端?

时间:2017-08-22 16:49:46

标签: node.js bluetooth bluetooth-lowenergy

客户端通过按下按钮发送帖子请求。 (服务器端:开始扫描发现蓝牙外设)

在服务器之后,我们希望在寻找蓝牙外围设备的功能结束后发送res.send("BLE_name"),但是在客户端按下按钮后很长一段时间内响应。

假设:我想在自己的自定义事件后调用app.post ...如何创建自定义事件来调用app.post()

我们使用:

  • 的node.js
  • 贵族模块
  • 表示
       // To send datas to client
        // List of bluetooth peripherals
        // JSON object
        app.post('/resScan', function(req, res){
            res.send( JSON_Object );     
        });

问候和非常感谢,

菲利普

2 个答案:

答案 0 :(得分:1)

我的朋友找到了解决方案,不确定是解决方案。

const formClientName = "form_03_btn";

var my_res_global    = null;

app.get('/', function( req, res )
{
  // We update the res value each time
  // we have a app.post method
  my_res_global = res;
  res.render( formClientName );
}); // app.get('/', function( req, res ))

app.post('/arduino_cmd', function( req, res )
{
  // We update the res value each time
  // we have a app.post method
  my_res_global = res;

  commandLine = req.body.content;
  sendCommandToArduino( commandLine );
  res.render( formClientName );
}); // app.post('/arduino_cmd', function( req, res ))

[...]

dialogCharacteristic[dialogCharacteristic.length-1].on('data', function(data, isNotification )
{
  [...]

  my_res_global.render( formClientName,  { displayArduino: "My test works fine !" } );

  [...]

});

一切正常!

现在我们写错了:

dialogCharacteristic[dialogCharacteristic.length-1].on('data', function(data, isNotification )
{
  [...]

  var myData = "My test works fine !";

  my_res_global.render( formClientName,  { displayArduino: myData } );

  [...]

});

给出错误: 错误:发送后无法设置标头。

我们正在寻找解决方案......

非常感谢您的所有时间,问题和想法!

致以最诚挚的问候,

菲利普。

答案 1 :(得分:0)

不,我与他合作,事实上我们遇到了问题:

按钮正常工作并正确调用服务器。我们也正确地收到了“req”,但是我们调用另一个函数(带有一个事件),这个函数需要一个随机时间,之后这个函数就完成了,然后我们想对响应开发票,如下所示:

noble.on('discover', function(){
     //....many statements and others process here
     // we use req.body.content  here

     // and at the end

     app.post('/server.js', function(req, res){
            res.send('data-to-the-client');
     });
});

我们的问题更多:因为事件有效吗?并且告诉好的所有事件现在已完成,现在可以为res发票。