Ubuntu下搭建Mqtt服务,跑Websocket JS客户端

Linux环境(Ubuntu)上搭建MQTT服务器(EMQX ) 本文主要介绍EMQX 的一些内容,终端介绍如何在Ubuntu上安装EMQX,并可以在第三方电脑上访问该服务器。本文通过实际操作方式,详细记录每个步骤应该注意的要点。 阅读详情

一、运行环境Ubuntu14.04

二、安装依赖

  1. sudo apt-get update
  2. sudo apt-get install g++
  3. sudo apt-get install cmake
  4. sudo apt-get install openssl 
  5. sudo apt-get install libssl-dev
  6. sudo apt-get install xsltproc
  7. sudo apt-get install docbook-xsl
  8. sudo apt-get install docbook-defguide
  9. sudo apt-get install build-essential
  10. sudo apt-get install libc-ares-dev
  11. sudo apt-get install uuid-dev
  12. sudo apt-get install daemon
  13. sudo apt-get install libwebsockets-dev
  14. sudo apt remove libwebsockets3

三、安装libwebsockets(Websocket支持)

  1. git clone https://github.com/warmcat/libwebsockets.git
  2. cd libwebsockets
  3. mkdir build
  4. cd build
  5. cmake ..
  6. make
  7. sudo make install
  8. sudo ldconfig

四、安装Mosquitto(Mqtt服务器)

  1. git clone https://github.com/eclipse/mosquitto.git
  2. cd mosquitto
  3. 更改configure.mk中
    WITH_WEBSOCKETS:=yes
    WITH_SRV:=no  
  4. make
  5. sudo make install 
  6. sudo cp mosquitto.conf /etc/mosquitto
  7. 请在/etc/mosquitto/mosquitto.conf 的“Default Listener”  一节添加如下几行:

        port 1883
        listener 1884
        protocol websockets 

 

五、运行mqtt服务

mosquitto -c /etc/mosquitto/mosquitto.conf

六、测试mqtt

mosquitto_sub -h 127.0.0.1 -p 1883 -t "track" -v (订阅消息,主题为“track”)

mosquitto_pub -h 127.0.0.1 -t "track" -m "test message" (发送消息)

七、MQTT协议 Websocket JS客户端

<html>
<head>
    <title>Mosquitto Websockets</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.0.1/mqttws31.min.js" type="text/javascript"></script>
    <script src="https://code.jquery.com/jquery-1.8.3.min.js" type="text/javascript"></script>

    <script type="text/javascript">
        var mqtt;
        var reconnectTimeout = 3000;
        var host = '127.0.0.1';    // hostname or IP address
        var port = 1884;
        var topic = 'track';        // topic to subscribe to
        var useTLS = false;
        var username = null;
        var password = null;
        // username = "test";
        // password = "123456";
        var cleansession = true;

        function MQTTconnect() {
            mqtt = new Paho.MQTT.Client(
                host,
                port,
                "web_" + parseInt(Math.random() * 100,
                10));
            var options = {
                timeout: 3,
                useSSL: useTLS,
                cleanSession: cleansession,
                onSuccess: onConnect,
                onFailure: function (message) {
                    $('#status').val("Connection failed: " + message.errorMessage + "Retrying");
                    setTimeout(MQTTconnect, reconnectTimeout);
                }
            };

            mqtt.onConnectionLost = onConnectionLost;
            mqtt.onMessageArrived = onMessageArrived;

            if (username != null) {
                options.userName = username;
                options.password = password;
            }
            console.log("Host="+ host + ", port=" + port + " TLS = " + useTLS + " username=" + username + " password=" + password);
            mqtt.connect(options);
        }

        function onConnect() {
            $('#status').val('Connected to ' + host + ':' + port);
            // Connection succeeded; subscribe to our topic
            mqtt.subscribe(topic, {qos: 0});
            $('#topic').val(topic);
        }

        function onConnectionLost(response) {
            setTimeout(MQTTconnect, reconnectTimeout);
            $('#status').val("connection lost: " + responseObject.errorMessage + ". Reconnecting");

        };

        function onMessageArrived(message) {

            var topic = message.destinationName;
            var payload = message.payloadString;

            $('#ws').prepend('<li>' + topic + ' = ' + payload + '</li>');
        };

        function button_onclick(){
            //这里写你要执行的语句
            var tp = $('#sendtopic').val();
            var val = $('#textsend').val();
            if(tp==''||val=='')
            {
                alert("no aaa");
                return;
            }
            var message = new Paho.MQTT.Message(val);
            message.destinationName = tp;
            message.qos=0;
            mqtt.send(message);
//        mqtt.publish(tp, 0, val);
            $('#ws').prepend('<li>' + tp + ' = ' + val+ '</li>');
        };

        $(document).ready(function() {
            MQTTconnect();
        });

    </script>
</head>
<body>
<h1>Mosquitto Websockets</h1>
<div>
    <div>Subscribed to <input type='text' id='topic' disabled />
        Status: <input type='text' id='status' size="30" disabled />
        </br>
        publish to <input type='text' id='sendtopic' /> text <input type='text' id='textsend' size="30"/>
        Status: <input type='button' value="send" id='btn' onclick="javascript:button_onclick()"/></div>
    <ul id='ws' style="font-family: 'Courier New', Courier, monospace;"></ul>
</div>
</body>
</html>

 

安装&源码

 

 

 

 

 

 

Ubuntu 20.04下5分钟搞定Mosquitto MQTT服务器搭建(含WebSocket支持) 本文详细介绍了在Ubuntu 20.04系统上快速部署支持WebSocket的Mosquitto MQTT服务器的完整安装配置流程。从基础服务安装、WebSocket插件启用、安全认证设置,到从命令行到浏览器的实战测试,提供了清晰的步骤和关键配置要点,帮助物联网开发者和Web应用开发者快速搭建本地实时消息枢纽。 阅读详情

相关推荐

MQTT服务器搭建深度实践:从协议解析到设备验证

MQTT是一种基于发布/订阅模型的轻量级物联网消息协议,其核心在于状态会话、QoS分级与心跳保活机制,区别于HTTP的请求-响应范式。理解MQTT协议帧结构(如CONNECT报文编码、变长剩余长度)是正确配置Broker的前提;而MQTT服务器搭建不仅涉及mosquitto安装与配置,更需掌握TLS安全加固、WebSocket支持、持久化策略及主题设计等关键实践。技术价值体现在解耦设备与应用、支撑高并发低功耗场景,广泛应用于ESP32传感器接入、边缘数据采集及工业网关通信。本文围绕MQTT协议详解和mqtt

weixin_33834137的博客 138

【手把手教你搭建MQTT服务器 + 域名备案 + 申请与部署SSL证书】

从0到1的整个过程 云服务器购买、emq服务器搭建、数据交互测试 域名购买与备案、SSL证书申请、emq部署SSL证书

qq_57238596的博客 1万+

从显示器到智能中枢:基于MQTT与Electron构建家庭入口屏原型

在物联网与AIoT技术推动下,传统显示设备正演变为集成了操作系统、应用生态与智能中枢的综合性平台,成为家庭场景的关键入口。其技术架构涵盖从底层硬件适配、操作系统定制到应用框架开发的全栈体系,核心在于实现设备管理、多模态交互与生态服务集成。通过MQTT协议实现设备间稳定通信,结合Electron等跨平台框架快速构建图形界面,开发者可以搭建具备设备控制、状态同步与模拟语音交互能力的智能中枢原型。这种技术方案不仅验证了智能入口屏的核心数据流与交互逻辑,也为深入探索嵌入式系统优化、多协议兼容与OTA升级等产品化挑战

weixin_33843409的博客 445

Ubuntu 20.04配置Nginx Websocket

WebSocket 是一种基于 TCP 连接的全双工通信的协议,其工作在应用层,建立连接的时候通过复用 Http 握手通道,完成 Http 协议的切换升级,即切换到 WebSocket 协议,协议切换成功后,将不再需要客户端发起请求,服务端就可以直接主动向客户端发送数据,实现双向通信。WebSocket 是双向通信协议,可以双向发送或接受信息。HTTP是单向的,只能由客户端发起请求时,服务器才能响应,服务器不能主动向客户端发送数据。WebSocket 可以和 HTTP Server 共享相同端口。

u013544769的博客 2520

Ubuntu下搭建Mqtt服务,跑Websocket JS客户端源码

Ubuntu下搭建Mqtt服务,跑Websocket JS客户端源码。参考:https://blog.youkuaiyun.com/fcoolt/article/details/82344482

FFmpeg实战:SEI自定义数据在RTMP推流中的高效嵌入

本文深入探讨了如何利用FFmpeg在RTMP推流中高效嵌入SEI自定义数据。通过将SEI比作与视频帧同步的“小纸条”,文章详细解析了H.264码流中SEI的结构与位置,并提供了命令行与API编程两种实战方法,帮助开发者实现直播答题、AI元数据回传等场景下的帧级精准数据同步。

weixin_29304021的博客 325

ubuntu系统下搭建本地物联网mqtt服务器的步骤

摘要:mqtt broker(服务器)是物联网通信的核心,网上有很多种开源的服务器可供选择,本文介绍如何在ubuntu系统下安装emqx服务器,让大家可以在局域网环境下搭建“云服务器”,体验物联网的乐趣。本文还分享了安装时遇到的错误解决方法,以及使用mqtt.fx模拟一台物联网设备与服务器通信。

ieeee.blog.youkuaiyun.com 5636

技术面试官视角:复盘北航/中科院/哈工大保研机试与面试,他们到底在考察什么?(附真题回忆与评分侧重点)

本文从技术面试官视角解析北航、中科院、哈工大等顶尖院校保研机试与面试的考核逻辑,揭示编程语言限制、题目难度设计等隐藏考察维度,并提供真题回忆与评分侧重点。帮助考生理解面试官的真实意图,掌握应对策略,提升通过率。

weixin_42549496的博客 518

tempgauge测试-MQTT Over WebSocket

测试环境: 操作系统:ubuntu 12.04 32位 软件: MQTT Broker:HiveMQ MQTT Client:The Paho Javascript Client 下载地址: http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.javascript.git/ MQTT Client:mosquitto_pub

lucifer_凡 2311

LDPC码译码原理——概率公式推导

怎么说呢,一直以来都想写一下博客。近半年多来我一直在学习LDPC码译码上的东西,主要是在FPGA实现上的,所以这次想写一些关于这方面的内容,包括译码的原理、仿真以及实现。(当然是基于准循环LDPC码上实现的)不过呢,我写这个的初衷是为了让初学者理解入门用的,而不是在大牛面前班门弄斧,有错误之处欢迎大家批评指正。不知道会不会有人一开始像我一样,为了学好LDPC码,先去好好了解其它的诸如RS码或者是卷...

stand_by_me123的博客 2万+

Amesim(五):单个悬架系统搭建

一、组成 单个悬架系统组成包括:端子,质量块*2,弹簧,阻尼器,速度路面反馈,路面激励。 二、搭建 打开Amesim,在 library 选择 1D Mechanical 选择质量模块,添加到skech中,并按 ctrl+r 旋转质量块,将箭头朝上,设置规定的力传递正方向 添加弹簧阻尼器,与质量块连接 添加VX模块,将路面的激励传递转化为速度和位移,传递给悬架系统 在...

林小川的博客 7166

【MQTT】3、搭建MQTT服务——手把手部署EMQX

这一篇,我们将使用 Docker,在本地快速部署一个生产级的 MQTT Broker——EMQX。从拉取镜像到登录 Dashboard,全程手把手操作。“用 Docker 部署”是本篇推荐的方式,也是目前最高效、最干净的方案。

JACKAL 590

Ubuntu开发环境配置——持续更新

本文简要介绍了Ubuntu下的开发环境配置流程和问题分析与解决,更多内容持续更新中。

m0_53365889的博客 2224

MQTTX 安装配置指南:从零开始掌握跨平台MQTT客户端工具

MQTTX是一款功能强大的跨平台MQTT 5.0客户端工具箱,支持桌面端、CLI命令行和WebSocket版本。无论是物联网开发者、测试工程师还是MQTT协议学习者,都可以通过MQTTX快速实现MQTT连接测试和消息调试。本指南将详细介绍MQTTX的安装配置方法,帮助你从零开始掌握这款优秀的MQTT客户端工具。 ## 🚀 快速入门:三大平台安装指南 ### Windows系统安装步骤 Wi

gitblog_01154的博客 803

【DRAM存储器十五】DDR介绍-关键技术之DLL和prefetch

详述DDR DLL和预取原理以及几个DDR相对初代SDRAM新增的时序参数

highman110的博客 4362

开发Qt上位机获取阿里云IOT设备数据(开发上位机对接阿里云IOT平台)

使用Qt框架开发一款上位机软件,调用阿里云物联网平台的API接口,获取设备最新上传的实时数据,并在Qt设计的软件界面上展示处理。同时,还支持绘制曲线图表展示数据,并具备定时刷新功能。

2143

物联网实验三:MQTT协议详解与服务器搭建实战指南

MQTT是一种基于发布-订阅模式的轻量级消息传输协议,专为低带宽、高延迟或不可靠网络环境下的物联网设备通信而设计。其核心原理是通过Broker服务器实现消息的发布与订阅解耦,支持QoS服务质量等级和心跳机制,确保消息可靠传输。在物联网开发中,MQTT协议能够有效解决设备间实时通信、低功耗远距离传输等关键问题,广泛应用于智能家居、工业监控、车联网等场景。掌握MQTT协议原理与服务器搭建技能,是物联网工程师进行设备接入与消息收发的必备基础。

weixin_34167819的博客 393

Microsemi Libero系列教程(四)——PLL的使用

文章目录PLL是什么Libero中PLL的使用官方文档 系列教程:Microsemi Libero系列教程 PLL是什么 PLL(Phase Locked Loop): 为锁相回路或锁相环,用来统一整合时钟信号,使高频器件正常工作,如内存的存取资料等。PLL用于振荡器中的反馈技术。 许多电子设备要正常工作,通常需要外部的输入信号与内部的振荡信号同步。一般的晶振由于工艺与成本原因,做不到很高的频率...

whik1194的博客 7208

阿里云ubuntu部署mqtt,设备终端以及web端引入mqtt进行数据交互

阿里云ubuntu服务器 1、apt search mosquitto 命令查看可用的Mosquitto包 2、使用命令安装Mosquitto: sudo apt install mosquitto 3、安装完成后,可以使用 man mosquitto 命令打开帮助文档。文档中列出了运行办法 4、修改/etc/mosquitto/mosquitto.conf 在mosquitto.conf最下面添加如下配置 # 绑定mqtt tcp 端口号 1883 port...

qq_23607397的博客 1935

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

EMQX v5.0 在Ubuntu环境下的微信小程序与Python设备联动实现

本文介绍了MQTT协议及其核心组件,包括发布者、订阅者和代理服务。详细解析了MQTT的三种QoS机制(0-2级)及其应用场景,阐述了完整的MQTT通信流程。对比了主流MQTT Broker(如EMQX和Eclipse Mosquitto)的特性及适用场景,重点讲解了轻量级MQTT Broker Eclipse Mosquitto的安装部署、配置管理和用户认证方法。文章为物联网开发者提供了MQTT协议的基础知识和实践指南,帮助选择合适的MQTT解决方案。

lovely_yoshino的博客 5948

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

MQTT服务器从搭建到生产级调优实战指南

MQTT是一种轻量级发布-订阅消息传输协议,广泛应用于物联网设备通信场景。其核心在于QoS等级、Clean Session会话管理、主题层级路由及TLS安全机制等协议特性。理解这些原理是实现可靠消息传递的基础,直接影响边缘设备接入、AEP平台对接与Spring Boot集成效果。本文围绕源码编译Mosquitto、精细化配置、协议行为验证(如QoS 1/2差异、通配符匹配规则)、JMeter压测与故障注入、以及生产级细节(证书信任链、日志轮转、重连风暴防护)展开,覆盖从教学实验到真实工程落地的全链路实践路径

weixin_34127717的博客 285

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

物联网场景中设备普遍低功耗、弱网、动态IP,传统HTTP轮询难以满足实时性与连接效率,因此轻量级消息协议MQTT成为主流通信方式。MQTT基于发布/订阅模型,通过Broker中转消息,支持QoS分级、遗嘱消息与保留消息,能有效应对设备掉线与状态同步问题。在实际工程部署中,选择合适的Broker是关键:Mosquitto轻量简单,适合实验与中小型项目;EMQX则支持大规模接入与可视化运维。本文以实验视角梳理MQTT协议核心机制,详解Mosquitto在Windows/Linux/Docker环境下的搭建与配置

weixin_34327223的博客 323

EMQ服务器搭建

EMQ服务器搭建 1.安装acme.sh并设置 # 安装acme.sh curl https://get.acme.sh | sh # 设置alias alias acme.sh=~/.acme.sh/acme.sh # 域名商API ID export DP_Id="******" # 域名商API Key export DP_Key="*******" # 生成证书 acme.sh --is...

Devil月哥 1466

web采用MQTT协议远程控制LED灯

测试环境mqtt_client (Publish) firefox win10mqtt_client (Subscribe) ubuntu 12.04mqtt_broker mosquitto ubuntu 12.04web端需要用到JavaScript Client 下载地址mqtt_client (Publish)代码publish.html<!DOCTYPE html PUBLIC "-

lucifer_凡 4806

Ubuntu上搭建mosquitto MQTT服务器:安装配置与避坑指南

物联网设备通信离不开轻量级消息协议MQTT,而broker作为消息中转核心,其稳定性直接影响整个系统。mosquitto是一款基于C语言实现的开源消息代理,以极低的内存占用和简洁配置著称,非常适合中小规模边缘部署场景。理解发布/订阅模型和broker转发原理,是搭建消息通道的基础,也是选型时判断性能瓶颈的关键。在内网环境快速部署一台MQTT服务器,既能验证设备双向通信,也可为Web实时监控提供数据通道。针对Ubuntu系统,从apt安装、配置文件编写到账号鉴权,再到常见连接失败排查,实战经验能显著缩短上手周

weixin_34293911的博客 284

MQTT服务器实战:从零部署Mosquitto物联网消息代理

MQTT是一种专为资源受限设备设计的轻量级发布/订阅消息传输协议,其核心在于低开销、高可靠与断网续传能力。它通过TCP/IP构建异步通信契约,支持QoS分级、遗嘱消息和主题过滤等关键机制,广泛应用于智能硬件、工业采集与边缘计算场景。作为当前最主流的开源MQTT broker,Mosquitto以C语言实现、零依赖、低内存占用著称,特别适合嵌入式环境与教学实验。本文聚焦Ubuntu平台下的Mosquitto 2.2.7源码编译、TLS证书签发、ACL权限控制及QoS1压测验证,覆盖从实验室调试到生产加固的完整

weixin_34292402的博客 310
上一篇: Caffe (Ubuntu 14.04 + GTX 1080)(转)
下一篇: 检查服务状态sh脚本
fcoolt
博客等级 码龄19年 4粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值