基于node.js搭建简单的MQTT服务器,手机通过热点连接电脑实现MQTT服务器测试

基于node.js搭建简单的MQTT服务器,手机通过热点连接电脑实现MQTT服务器测试

服务器搭建

首先搭建好node.js环境,配置好MQTT服务器,这个网上教程有许多,可以参照这篇博客来进行配置Node.js配置

服务端mqtt.js:

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 "test":
      // console.log('message-publish', packet.payload.toString());
      //MQTT可以转发主题消息至其他主题
      //MqttServer.publish({ topic: 'other', payload: 'sssss' });
      break;
    case "other":
      console.log("message-123", packet.payload.toString());
      break;
  }
});

MqttServer.on("ready", function() {
  //当服务开启时的回调
  console.log("mqtt is running...");
});

客户端发送方publish.js

const mqtt = require("mqtt");
const client = mqtt.connect("mqtt://192.168.137.1 :1883"); //连接到mqtt服务端
setInterval(function() {
  const value = Math.ceil(Math.random() * 40);
  client.publish("test", value.toString(), { qos: 0, retain: true });
}, 3000);

客户端订阅方subscribe.js

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

测试

首先终端输入node mqtt打开服务端

基于node.js搭建简单的MQTT服务器,手机通过热点连接电脑实现MQTT服务器测试

输入node subscribe打开接收客户端

输入node publish 打开发送客户端

之后可以看到

基于node.js搭建简单的MQTT服务器,手机通过热点连接电脑实现MQTT服务器测试

发送客户端向test话题发送数据,接收客户端订阅test话题,能收到数据。证明MQTT服务器搭建完成。

手机电脑MQTT测试

手机通过连接电脑热点进行手机发送客户端发送数据,电脑接收客户端订阅话题获取数据。

首先编写手机端APP,让它能使用MQTT协议发送数据,这里基于APP inventor开发了一个简单的APP来进行测试

基于node.js搭建简单的MQTT服务器,手机通过热点连接电脑实现MQTT服务器测试

逻辑设计:

基于node.js搭建简单的MQTT服务器,手机通过热点连接电脑实现MQTT服务器测试

之后进行电脑端的配置,打开防火墙设置,把1883端口打开。
基于node.js搭建简单的MQTT服务器,手机通过热点连接电脑实现MQTT服务器测试

之后打开电脑热点,手机连接到电脑热点

基于node.js搭建简单的MQTT服务器,手机通过热点连接电脑实现MQTT服务器测试

然后查看自己电脑的ip地址

基于node.js搭建简单的MQTT服务器,手机通过热点连接电脑实现MQTT服务器测试

由于我的ip地址是上述,使用上面客户端配置的时候连接的服务端IP也是这个,自己配置的时候需要注意

之后通过连接到服务器,电脑端打开接收客户端,手机端点击发送数据按钮,观察电脑接收客户端变化

基于node.js搭建简单的MQTT服务器,手机通过热点连接电脑实现MQTT服务器测试

可以看到电脑端订阅到了手机客户端向服务器发送的数据。测试成功。

整个过程中我认为最重要的就说确定好自己的局域网连接情况,因为这是自己搭建的服务器,只有当手机和电脑在同一个局域网下,手机才能连接到电脑的服务端上面,否则是连接不上的,这是我做这次测试过程中最直观的感受。

上一篇:阿里架构师眼里JVM可以说的那些事


下一篇:Mybatis JdbcType与Oracle、MySql数据类型对应列表