首页 > 解决方案 > 如何使用 mqtt、nodejs 和 socket.io 发送实时数据到 Flutter

问题描述

我想使用 socket.io、nodejs 和 mqtt 从 mqtt 代理(hivemq.com)发送数据来颤动。

这是我订阅主题并将数据存储到firebase实时数据库的方法,现在我如何使用socket.io将数据发送到flutter?

//inserting data from mqtt into firebase realtime database
const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
var http = require('http');
const port = process.argv.slice(2)[0];
const app = express();
app.use(bodyParser.json());

const mqtt = require('mqtt')
const client = mqtt.connect('mqtt://broker.hivemq.com')
var firebase = require('firebase');
const server = http.Server(app)
const socketIo = require('socket.io')(server)

function mqtt_messsageReceived(topic, message, packet) {
    if(message){
      let messageObject = JSON.parse(message)
      insertMessage(topic, messageObject, packet)
      socketIo.emit('geocoordinateData', messageObject);

    }
}
socketIo.on('connection', (socket) =>{
  console.log(' ${socket.id}')
  socket.emit('request', 'ok');
 
})

//calling function to mqtt client event
client.on('message', mqtt_messsageReceived)

在客户端,我像这样初始化 socke.io

import 'package:flutter/material.dart';
import 'package:socket_io_client/socket_io_client.dart' as IO;
void main() {
 IO.Socket socket = IO.io('https://xxxx.herokuapp.com/');
print('mainohhhhh');
 socket.onConnect((data) {
    print('connect');
    socket.emit('msg', 'test');
    print('socketohhhhh');
  });
socket.on('geocoordinateData', (data) => print(data));
  runApp(MyApp());
}

当我运行时,客户端级别没有任何反应

如何包装 socket.io 函数以将数据发送到颤动?

标签: node.jsfluttersocket.iomqtt

解决方案


推荐阅读