配置emqx服务端

1.首先下载emqx服务端。https://www.emqx.io/cn/downloads#broker,下载broker就行。

2.解压,cd到bin目录下,然后敲命令

emqx start

注意在这之前最好保证下面这些端口不被占用。否则你还要emqx restart重启。

尤其是8081端口,冲突概率很高,Url not found 这个错就是因为这个端口冲突所致。

start之后不会有显示成功的状态显示,没其他提示就是成功。

3.之后进入http://localhost:18083/ 默认用户名是admin,密码public。

首次进入设置里面可以将语言改成“中文”。

到这里mqtt服务基本是部署好了。开始编写客户端代码

开始写客户端代码

新建一个web项目,或者winform项目都行。

nuget里面搜 M2Mqtt。(为什么选这个呢,因为这个对.net环境几乎没有依赖,任何版本的.net都能运行。好多其他的Mqttnet什么的都要求core才行)

安装完后github(https://github.com/eclipse/paho.mqtt.m2mqtt,如果连接没了就自己在github上搜m2mqtt)上面有源码和案例,粘下来几段开始试验。

我这边直接把我试验代码贴上来

using uPLibrary.Networking.M2Mqtt;
using uPLibrary.Networking.M2Mqtt.Messages;

后端是tcp协议,默认就是1883端口,就不用改,

public class HomeController : Controller{string MQTT_BROKER_ADDRESS = "192.168.0.10";public string recive_message { get; set; }public ActionResult Index(){// create client instance MqttClient client = new MqttClient(IPAddress.Parse(MQTT_BROKER_ADDRESS));// register to message received client.MqttMsgPublishReceived += client_MqttMsgPublishReceived;string clientId = Guid.NewGuid().ToString();client.Connect(clientId);// subscribe to the topic "/home/temperature" with QoS 2 client.Subscribe(new string[] { "/home/temperature" }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE }); return View();}void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e){recive_message = System.Text.Encoding.UTF8.GetString(e.Message);// handle message received }public JsonResult post(string message){MqttClient client = new MqttClient(IPAddress.Parse(MQTT_BROKER_ADDRESS));string clientId = Guid.NewGuid().ToString();client.Connect(clientId);// publish a message on "/home/temperature" topic with QoS 2 client.Publish("/home/temperature", Encoding.UTF8.GetBytes(message), MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE, false);return Json(true);}}

这个类库太精简了,精简到看方法名称就知道这个是干嘛的了。真的不用再去讲解这个类库怎么用了。

后端(winform)接收发送消息到这就差不多了。

下面开始前端(web)接受发送消息。

前端我们添加引用(https://github.com/eclipse/paho.mqtt.javascript)  官方说明文档:https://www.eclipse.org/paho/files/jsdoc/Paho.MQTT.Client.html  js下载地址:https://www.eclipse.org/downloads/download.php?file=/paho/releases/1.0.3/paho.javascript-1.0.3.zip

<script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.js" type="text/javascript"></script>

然后加下面这段代码,也是人家官网抄的,前端是走的websocket协议,所以是8083端口。

// Create a client instanceclient = new Paho.MQTT.Client("127.0.0.1", 8083, "clientId");// set callback handlersclient.onConnectionLost = onConnectionLost;client.onMessageArrived = onMessageArrived;// connect the clientclient.connect({ onSuccess: onConnect });// called when the client connectsfunction onConnect() {// Once a connection has been made, make a subscription and send a message.console.log("onConnect");client.subscribe("/home/temperature");message = new Paho.MQTT.Message("Hello");message.destinationName = "World";client.send(message);}// called when the client loses its connectionfunction onConnectionLost(responseObject) {if (responseObject.errorCode !== 0) {console.log("onConnectionLost:" + responseObject.errorMessage);}}// called when a message arrivesfunction onMessageArrived(message) {console.log("onMessageArrived:" + message.payloadString);}

到这调吧调吧基本就都通了。。。

最后

最后我补充一下emqx和 咱们 写好的客户端 联调测试的方法。

显示 当前状态: 已连接 就对了

然后

订阅完成,

代码写完了,就可以各种进行收发测试了。

基于 M2Mqtt 和 emqx 实现的MQTT通讯相关推荐

  1. 基于 MQTT 通讯一个简单的 Java工程

    这篇文章也是记录一下我当时为了能够测试一个MQTT方案学习设计的一个手机APP, 要特别感谢B站UP主 阿正啷个哩个啷,整个程序从0开始写,后期向同事请教,添加了部分功能模块 本文针对Java 0基础 ...

  2. 基于ESP8266之使用MQTT通讯的迷你空气质量监测站制作(含手机APK)

    提示:本迷你空气质量监测站可用于检测空气温度.湿度.CO2和TVOC含量 文章目录 前言 一.功能介绍 二.基本思路 三.硬件连接 三.Arduino代码 四.APP制作 五.外壳绘制 五.成品展示 ...

  3. micropython esp32驱动舵机_关于micropython ESP32的MQTT通讯方式控制舵机

    首先我们的前提是实践过我曾经写的关于micropython ESP32+PCA9685 舵机转速控制[https://blog.csdn.net/mrjiale/article/details/818 ...

  4. 阿里云 IoT 企业物联网平台 MQTT 通讯模式

    阿里云 IoT企业物联网平台为不同场景的硬件提供了多种通信模式,例如设备到云,云到设备,设备到设备之间的通信.尽管不同业务场景设备和交互行为差异很大,但是大多数底层数据流通信模型都可以归类为三种MQT ...

  5. 【BW16 应用篇】安信可BW16模组/开发板AT指令实现MQTT通讯

    文章目录 前言 1 固件烧录 2 EMQ服务器搭建 2.1 软件获取 2.2 启动EMQ服务 3 设备端联网配置 3.1 AT指令配置 3.2 信息交互 联系我们 前言 本文主要介绍安信可BW16模组 ...

  6. 基于开源jabber(XMPP)架设内部即时通讯服务的解决方案

    原文地址:基于开源jabber(XMPP)架设内部即时通讯服务的解决方案 作者:高傲的活着 Jabber 是著名的即时通讯服务服务器,它是一个自由开源软件,能让用户自己架即时通讯服务器,可以在Inte ...

  7. 基于环信的仿QQ即时通讯的简单实现

    代码地址如下: http://www.demodashi.com/demo/11645.html 我的博客地址 之前一直想实现聊天的功能,但是感觉有点困难,今天看了环信的API,就利用下午的时间动手试 ...

  8. php爬取flash的交互数据库,基于PHP的Flash与MySQL数据库通讯的实现

    第 27卷 第 6期 2013年 12月 商洛学院学报 Journal of Shangluo University V01.27 NO.6 Dec. 2013 基于 PHP的 Flash与 MySQ ...

  9. 基于STM32和W5500的Modbus TCP通讯

     在最近的一个项目中需要实现Modbus TCP通讯,而选用的硬件平台则是STM32F103和W5500,软件平台则选用IAR EWAR6.4来实现. 1.移植前的准备工作 为了实现Modbus ...

  10. websocket 发送图片_基于WebSocket的web端IM即时通讯应用的开发

    基于WebSocket的web端IM即时通讯应用的开发 功能列表: 1.Web端的IM即时通讯应用 2.支持上线.下线.实时在线提醒 3.单聊.群聊的建立 4.普通文字.表情.图片的传输(子定义富文本 ...

最新文章

  1. 《iPhone开发基础教程》第13章 我在哪里?使用Core Location定位功能
  2. 分布式数据库系统(DDBS) 概述
  3. Kali Linux 安全渗透教程第六更1.4.2 安装至USB驱动器Kali Linux
  4. java 实体类包含list 怎么取值_舅舅是面试官,偷偷告诉你们面试官最爱问的Java面试题...
  5. spring IOC 之篇三:默认标签的解析
  6. python odoo_odoo开发学习 -- Python2 or Python3 ?
  7. 随想录(反调试技术)
  8. 家庭NAS存储服务器给我们带来了什么
  9. PPT中均匀分布各图形(水平或垂直)
  10. SHOP++ JTM2.5发布
  11. Ubuntu系统下载网易云音乐
  12. Python攻城师的成长——ORM(choices字段)、AJAX
  13. springboot 解决java.lang.ArrayStoreException
  14. java生成随机10位数字_用Java生成10个随机的四位数字
  15. NOI / 2.1基本算法之枚举 1809:两倍
  16. 连接主机名失败但可以连接主机ip,能用ip地址连接却无法用主机名连接,看过来一站解决
  17. vue3+vant开发微信公众号网页爬坑不完全指北
  18. 如何显示计算机语言栏,如何显示语言栏 显示语言栏简单步骤介绍
  19. APP - 查询全国医院各科室排行榜(一)
  20. 神经网络常见评价指标超详细介绍(ROC曲线、AUC指标、AUROC)

热门文章

  1. 计算机 无法自检,电脑开机无法完成自检的原因分析
  2. 干货 | 每天十亿级数据更新,秒出查询结果,ClickHouse在携程酒店的应用
  3. 路由器、交换机、集线器的区别
  4. 图像scale与相机参数_摄像头参数测试指导分析解析
  5. js 日历,节假日,添加日志
  6. Nik Collection 4
  7. python pandas按照行数切分文件
  8. 网站优化关键词选择时需要的注意事项
  9. php cms 301,www域名301
  10. icon 做成html形式,CSS icon的各种做法