当前位置:首页 » 《休闲阅读》 » 正文

前端,大疆上云api,使用Websocket、MQTT连接、订阅,进行航线数据传输

12 人参与  2024年11月25日 12:01  分类 : 《休闲阅读》  评论

点击全文阅读


<template>  <div id="map-container" ref="mapContainer" style="height: 600px;"></div></template><script setup>import { onMounted, ref, onUnmounted } from 'vue';import AMapLoader from '@amap/amap-jsapi-loader';import MQTT from 'mqtt';import mqtt from 'mqtt';import { ElMessage } from 'element-plus';// 地图和MQTT配置信息const amapKey = '高德key';const mqttTopic = ''; // 订阅的主题//mqtt配置let options = {  username: 'admin',  password: 'public',//密码  clientId: 'mqttjs_' + Math.random().toString(16).substr(2, 8),// 随机生成客户端ID  connectTimeout: 600000,  keepalive: 10,//心跳,单位秒,如果后台开启监听可以快速知道有没有退出  clean: true,  reconnecrPeriod: 3000,//重连周期,1000毫秒,两次之间的时间间隔  resubscribe: true,//如果连接断开并重新连接,则会再次自动订阅已订阅的主题(默认true)}//ws wss是在h5网页上websoket协议 而wx wxs是针对微信小程序使用 当然如果你用uniapp做app的话 使用的也是wx const client = MQTT.connect(`ws://你的ip:8083/mqtt`, options);client.on('connect', (res) => {  ElMessage.success("链接成功")  client.subscribe(mqttTopic, (err) => {    if (!err) {      ElMessage.success("订阅成功")    }  })}).on('message', (topic, message) => {  console.log(topic, JSON.parse(message))  //接受服务端信息}).on('reconnect', (topic, message) => {  ElMessage.warning("重连")}).on('error', () => {  console.log('77877')  //重新连接  client.reconnect()})// 地图容器的引用const mapContainer = ref(null);onMounted(async () => {  try {    // 加载高德地图API    const AMap = await AMapLoader.load({      key: amapKey,      version: '2.0',      plugins: ['AMap.Polyline'],    });    // 初始化地图    const map = new AMap.Map(mapContainer.value, {      zoom: 10,      center: [116.397428, 39.90923], // 北京市中心点    });    // 地图上的点位,示例为北京的几个点    const points = [      new AMap.LngLat(116.191031, 39.988585),      new AMap.LngLat(116.389275, 39.925818),      new AMap.LngLat(116.287444, 39.810742),    ];    // 绘制航线    const polyline = new AMap.Polyline({      path: points,      strokeColor: "#FF33FF",      strokeWeight: 6,      strokeOpacity: 0.2,      strokeOpacity: 1,    });    map.add(polyline);    // 序列化航线数据    const lineData = JSON.stringify({ points: points.map(p => [p.lng, p.lat]) });    // 发布消息到MQTT主题    client.publish(mqttTopic, lineData, { qos: 1 }, (err) => {      if (err) {        console.error('MQTT消息发布失败:', err);      } else {        console.log('MQTT消息发布成功');      }    });  } catch (error) {    console.error('地图或MQTT初始化失败:', error);  }});// MQTT消息接收回调client.on('message', (topic, message) => {  console.log(`从主题${topic}接收到消息: ${message.toString()}`);});// 组件销毁时断开MQTT连接onUnmounted(() => {  client.end();});</script><style>#map-container {  width: 100%;}</style>


点击全文阅读


本文链接:http://zhangshiyu.com/post/191710.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1