热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于node.js与appinventor在本地搭建简单的MQTT服务器,手机通过热点连接电脑实现MQTT服务器

服务器搭建与订阅者发布者在电脑上实现参考链接:1.使用nodejs快速搭建MQTT服务器及实时推送、获取数据2.nodejs搭建MQTT服务器(要以管理员方式打开cmd来npmin

服务器搭建 与 订阅者 发布者 在电脑上实现

参考链接:

1.使用 nodejs 快速搭建 MQTT 服务器及实时推送、获取数据
2.nodejs搭建MQTT服务器(要以管理员方式打开cmd来npm install)
3.兄弟博客
4.使用apollo搭建本地服务器1
5.使用apollo搭建本地服务器2

个人代码:

服务端mqttserver:

const mosca = require("mosca");
const MqttServer = new mosca.Server({
port: 1883
});
MqttServer.on("clientConnected", function(client) {
//当有客户端连接时的回调.
console.log("client connected", client.id);
});
/**
* 监听MQTT主题消息
* 当客户端有连接发布主题消息时
**/
MqttServer.on("published", function(packet, client) {
var topic = packet.topic;
switch (topic) {
case "temperature":
console.log('temperature', packet.payload.toString());
//MQTT可以转发主题消息至其他主题
// MqttServer.publish({ topic: 'other', payload: 'sssss' });
break;
case "humidity":
console.log("humidity", packet.payload.toString());
break;
}
});

发布者 pubclient.js

const mqtt = require("mqtt");
const client = mqtt.connect("mqtt://127.0.0.1:1883"); //连接到mqtt服务端
//写个定时器定时每隔3秒定时推送天气信息,此业务可替换为自己的实际需求
setInterval(function() {
const value = Math.ceil(Math.random() * 40);
client.publish("temperature", value.toString(), { qos: 0, retain: true });
}, 3000);

订阅者 subclient.js

const mqtt = require("mqtt");
// const mqtt = require('./node_modules/mqtt/dist/mqtt.min.js')
const client = mqtt.connect("mqtt://127.0.0.1:1883"); //指定服务端地址和端口
client.on("connect", function() {
console.log("服务器连接成功");
// connected = client.connected
client.subscribe("temperature", { qos: 1 }); //订阅主题为test的消息
client.subscribe("humidity",{ qos:1});
});
client.on("message", function(top, message) {
switch (top) {
case "temperature":
console.log("当前topic:", top);
console.log("当前温度:", message.toString());
break;
case "humidity":
console.log("当前topic:", top);
console.log("当前湿度:", message.toString());
break;
}
});

成功演示

《基于node.js与appinventor在本地搭建简单的MQTT服务器,手机通过热点连接电脑实现MQTT服务器》

基于inventor

inventor设计

《基于node.js与appinventor在本地搭建简单的MQTT服务器,手机通过热点连接电脑实现MQTT服务器》

《基于node.js与appinventor在本地搭建简单的MQTT服务器,手机通过热点连接电脑实现MQTT服务器》
《基于node.js与appinventor在本地搭建简单的MQTT服务器,手机通过热点连接电脑实现MQTT服务器》

电脑与手机在同一局域网中(这里电脑连接手机热点)

同学是网线连接后手机连接电脑热点,我因为没有网线,连接校园网后手机连不上电脑热点,但是通过这个方法成功了
《基于node.js与appinventor在本地搭建简单的MQTT服务器,手机通过热点连接电脑实现MQTT服务器》
手机端需要通过这个IP地址来访问

成功演示

《基于node.js与appinventor在本地搭建简单的MQTT服务器,手机通过热点连接电脑实现MQTT服务器》
《基于node.js与appinventor在本地搭建简单的MQTT服务器,手机通过热点连接电脑实现MQTT服务器》

总结与感想

的确,这个测试需要在同一局域网中进行,首先得能够ping通。其次知道本地IP的区别与用途。当appinventor 直接指定IP地址而不是通过文本框输入的时候却是不能完成,这是一个问题。


推荐阅读
  • 本打算教一步步实现koa-router,因为要解释的太多了,所以先简化成mini版本,从实现部分功能到阅读源码,希望能让你好理解一些。希望你之前有读过koa源码,没有的话,给你链接 ... [详细]
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • 本文探讨了在Node.js环境中如何有效地捕获标准输出(stdout)的内容,并将其存储到变量中。通过具体的示例和解决方案,帮助开发者解决常见的输出捕获问题。 ... [详细]
  • 本文档提供了详细的MySQL安装步骤,包括解压安装文件、选择安装类型、配置MySQL服务以及设置管理员密码等关键环节,帮助用户顺利完成MySQL的安装。 ... [详细]
  • HTTP中的Chunked编码与Content-Length的区别及应用场景
    本文探讨了在HTTP协议中,当使用Transfer-Encoding为chunked时为何无需设置Content-Length,以及这种编码方式的具体实现和优势。 ... [详细]
  • 本文介绍了一个基本的同步Socket程序,演示了如何实现客户端与服务器之间的简单消息传递。此外,文章还概述了Socket的基本工作流程,并计划在未来探讨同步与异步Socket的区别。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 在Node.js中调用MySQL存储过程`updateUser(p1, p2, @p3)`时,其中`@p3`为输出参数。若更新操作失败,则返回0;成功则返回1。本文将详细介绍如何正确获取存储过程的返回结果,并确保在实际应用中能够顺利执行。 ... [详细]
  • Node.js 教程第五讲:深入解析 EventEmitter(事件监听与发射机制)
    本文将深入探讨 Node.js 中的 EventEmitter 模块,详细介绍其在事件监听与发射机制中的应用。内容涵盖事件驱动的基本概念、如何在 Node.js 中注册和触发自定义事件,以及 EventEmitter 的核心 API 和使用方法。通过本教程,读者将能够全面理解并熟练运用 EventEmitter 进行高效的事件处理。 ... [详细]
  • 基于STM32的智能太阳能路灯设计与华为云IOT集成方案
    基于STM32的智能太阳能路灯设计与华为云IOT集成方案 ... [详细]
  • 本文探讨了在使用Apache Flink向Kafka发送数据过程中遇到的事务频繁失败问题,并提供了详细的解决方案,包括必要的配置调整和最佳实践。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置单节点的Redis服务,包括下载、解压、编译安装以及启动服务的具体步骤。 ... [详细]
  • 利用 JavaScript 和 Node.js 验证时间的有效性
    本文探讨了如何使用 JavaScript 和 Node.js 验证时间的有效性。通过编写一个 `isTime` 函数,我们可以确保输入的时间格式正确且有效。该函数利用正则表达式匹配时间字符串,检查其是否符合常见的日期时间格式,如 `YYYY-MM-DD` 或 `HH:MM:SS`。此外,我们还介绍了如何处理不同时间格式的转换和验证,以提高代码的健壮性和可靠性。 ... [详细]
  • 在处理木偶评估函数时,我发现可以顺利传递本机对象(如字符串、列表和数字),但每当尝试将JSHandle或ElementHandle作为参数传递时,函数会拒绝接受这些对象。这可能是由于这些句柄对象的特殊性质导致的,建议在使用时进行适当的转换或封装,以确保函数能够正确处理。 ... [详细]
  • Node.js 配置文件管理方法详解与最佳实践
    本文详细介绍了 Node.js 中配置文件管理的方法与最佳实践,涵盖常见的配置文件格式及其优缺点,并提供了多种实用技巧和示例代码,帮助开发者高效地管理和维护项目配置,具有较高的参考价值。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有