win10使用node.js搭建mqtt服务器附详细图文攻略
1.前言
最近刚好看到GitChat mqtt协议快速入门然后就付费学习一下,开始写一下mqtt的一些记录,作为课程的学习记录过程,有需要的可以自己扫下面的码去看一下个人觉得还是不错的讲的挺详细,就是没有一些图片描述或者视频让我这个初次学习node.js的人有些混乱,嘛不过这些问题还好自学没什么太大的难度。虽然之前也学过java的mqtt也同样实现订阅和发布功能但是还是不够稳健需要再补充一些知识。之前是直接把数据能传输然后能实现后就不管了,但是这样貌似还是不太行的,学习需要再继续学习一下。
系统:Window10
2.Windows 上安装 Node.js
1、Windows 安装包(.msi)
32 位安装包下载地址 : https://nodejs.org/dist/v4.4.3/node-v4.4.3-x86.msi
64 位安装包下载地址 : https://nodejs.org/dist/v4.4.3/node-v4.4.3-x64.msi
本文实例以 v0.10.26 版本为例,其他版本类似, 安装步骤:
步骤 1 : 双击下载后的安装包 v0.10.26,如下所示:
步骤 2 : 点击以上的Run(运行),将出现如下界面:
步骤 3 : 勾选接受协议选项,点击 next(下一步) 按钮 :
步骤 4 : Node.js默认安装目录为 “C:\Program Files\nodejs” , 你可以修改目录,并点击 next(下一步):
步骤 5 : 点击树形图标来选择你需要的安装模式 , 然后点击下一步 next(下一步)
步骤 6 :点击 Install(安装) 开始安装Node.js。你也可以点击 Back(返回)来修改先前的配置。 然后并点击 next(下一步):
安装过程:
检测PATH环境变量是否配置了Node.js,点击开始=》运行=》输入"cmd" => 输入命令"path",输出如下结果:
PATH=C:\oraclexe\app\oracle\product\10.2.0\server\bin;C:\Windows\system32;
C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;
c:\python32\python;C:\MinGW\bin;C:\Program Files\GTK2-Runtime\lib;
C:\Program Files\MySQL\MySQL Server 5.5\bin;C:\Program Files\nodejs\;
C:\Users\rg\AppData\Roaming\npm
我们可以看到环境变量中已经包含了C:\Program Files\nodejs\
检查Node.js版本
2、Windows 二进制文件 (.exe)安装
32 位安装包下载地址 : http://nodejs.org/dist/v0.10.26/node.exe
64 位安装包下载地址 : http://nodejs.org/dist/v0.10.26/x64/node.exe
安装步骤
步骤 1 : 双击下载的安装包 Node.exe ,将出现如下界面 :
点击 Run(运行)按钮将出现命令行窗口:
版本测试
进入 node.exe 所在的目录,如下所示:
以上图文来自Node.js 安装配置菜鸟教程
3.下面我们来安装mqtt服务器在node.js中
我们在cmd输入
npm install mqtt --save
node.exe使用npm是不行的具体可以看这篇文章
https://blog.csdn.net/qq_16519957/article/details/86751066
那我们如何指定mqtt安装的地方呢?
选择一个地方并创建一个文件夹mqtt然后在命令提示符中切换到你的文件夹
第二步输入npm install mqtt --save
然后我们就可以看到mqtt生成了一个文件夹如下图所示。
然后安装好mqtt以后就出现这个文件夹
我们都打开看一下里面有什么东西
4.创建一个mqtt用于测试的客户端
我们来写一个Hello World是的没看错就是Hello World
先创建一个mqttest.js在我们刚才创建的mqtt文件夹内
var client = mqtt.connect('mqtt://iot.eclipse.org')
接下来我们通过捕获 connect 事件以显示Hello world
message将其记录下来
client.on('connect',function()
{
client.subscribe('presence')
client.publish('presence','Hello world')
})
client.on('message',function(topic,message)
{
console.log(message.toString())
client.end
})
然后我们发送过去在cmd中输入node mqtttest.js就是你创建的文件名
5.建立持久会话与非持久会话的连接
我们在原有的基础上面修改一些代码
这里我们通过 ClientID 选项指定 Client Identifier
这里clean就是清除用户连接的session
如果clean是true就是持久会话意思就是发送到服务器的时候服务器会先确认他有没有session如果有那么就是上线就是true,非持久会话就是false
var client = mqtt.connect('mqtt://iot.eclipse.org',{
clientId:"mqtt1",
clean:false
})
接下来我们通过捕获 connect 事件将 CONNACK 包 Return Code 和 Session Present Flag 打印出来,然后断开连接:
client.on('connect', function (connack) {
console.log(`return code: ${connack.returnCode}, sessionPresent: ${connack.sessionPresent}`)
client.end()
})
我们来看一下完整代码:
var mqtt = require('mqtt')
var client = mqtt.connect('mqtt://iot.eclipse.org',{
clientId:"mqtt1",
clean:false
})
client.on('connect',function()
{
client.subscribe('presence')
client.publish('presence','Hello world')
})
client.on('message',function(topic,message)
{
console.log(message.toString())
client.end
})
client.on('connect', function (connack) {
console.log(`return code: ${connack.returnCode}, sessionPresent: ${connack.sessionPresent}`)
client.end()
})
有图有真相,下面我们来看一下图