7-2-2-1-1 后端代码

博客介绍了用JavaScript编写的后端代码,使用socket.io模块创建服务器,实现基于事件的双向实时通信。处理ESP8266加速模块连接,将其信息添加到本地列表,向后端服务器通知浏览器。还说明了消息转发、图形元素构建,以及处理特定模块消息和重置命令等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

整个后端代码是用JavaScript编写的,它位于 server.js 文件中。

要创建服务器,请使用 socket.io 提供的模块,因为 socket.io 提供基于事件的双向实时通信:

var server = http.createServer(app);
var io = require('socket.io').listen(server);

要接收消息,必须为它们添加处理程序。在“connection”事件中,当收到消息时,这意味着新的ESP8266加速模块想要连接到服务器。从“data”中检索ID和套接字的值,并将其添加到先前连接的ESP8266加速模块的本地列表中:

socket.on('connection', function (data)
{
  var acc_ram = new Object();
  acc_ram.socket_id = socket.id;
  var data_json = ParseJson(JSON.stringify(data));
  acc_ram.acc_id = data_json.acc_id;
  acc_ram.socket = socket;
  addACCObject(acc_ram);
  printACC();
  for(var webBrowsers = 0; webBrowsers < web-Connections.length; webBrowsers++)
  {
    var sessionID = webConnections[web-Browsers].socket;
    sessionID.emit('acc_ram',[acc_ram:data])
  }
});

为了通知所有连接的浏览器新的ACC已准备好发送数据,后端服务器代码向它们发送 acc_ram 消息并转发包含模块ID的data对象


收到消息后,浏览器将为新模块构建动态图形元素(画布提取,按钮)。


当后端收到包含测量加速度值的 JSON 消息类型时,消息将转发到所有浏览器,并且值将成为 smoothie.js 图形的输入数据:

socket.on('JSON', function (data)
{
  for ( var webBrowsers = 0; webBrowsers < webConnections.length; webBrowsers++)
  {
    //send data to all connected browsers
    var sessionID = webConnections[webBrowsers].socket;
    sessionID.emit('acc_data', [acc_data:data]);
  }
});

对于从网页收到的发往特定ESP8266模块的消息,我们需要首先根据套接字ID识别目标模块,然后将该消息发送到正确的模块。否则,将向所有ESP8266模块发送重置命令,我确信这不是您打算做的:

socket.on('resetModule', function (data)
{
  for(var j=0; j< accConnections.length; j++)
  {
    var acc_m = accConnections[j];
    if(acc_m.acc_id == data.acc_id) 
    {
      var s = accm.socket; //Get the socket
      s.emit ( " resetModule" , (message: data] ) ;
      return; //======> .
    }
  }
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值