Mosquitto持久层群推消息实现思路

mosquitto安装mysql插件 进行权限认证 mosquitto安装mysql插件支持动态数据库动态管理用户 阅读详情

http://www.jouhu.com/blog/?p=2632

1 前言

最近在考虑Android平台下基于Mosquitto实现持久层的群消息推送的问题,在这里整理一下思路。以为实现做准备。

2 Mosquitto项目说明

Mosquitto项目是一个基于IBM MQTT协议的消息通讯服务器端,作者在考虑到Windows以及Linux及其他平台通用性的要求下,采用了select模型。按照模型本身,其所支撑的实时在线用户不要超过3000为宜。如果需要实现更多用户的群发,可以参考本博客另外一个文章 Android和iPhone平台的一种集群推送服务架构。

3 实现的思路
3.1 Android端用户下载客户端安装,然后启动允许推送后,生成其唯一ID号。
3.2 客户端使用该唯一ID号登录Mosquitto端后,将该ID插入DB Server,如MYSQL,同时将该ID插入Memcached。参考代码read_handle_server.c的 283行,在这里执行上步说的两个操作,并将该客户端在线状态设置为1.
3.3 当服务器端获得客户端退出的消息时,将该客户端在线状态设置为0,同时将该客户端从Memcached移除。参考代码loop.c的260行和275行。
3.4 当同一客户端登录的时候,参考代码read_handle_server.c的201行。
3.5 参考client/pub_client.c代码,实现一个独立的server端。
实现流程:
读取待发送数据->从memcached中读取在线用户->调用mosquitto_publish推送数据到客户端。

4 server段伪代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mosquitto_lib_init ( ) ;
mosq  = mosquitto_new (id , NULL ) ;
mosquitto_will_set (mosq ,  true , will_topic , will_payloadlen , will_payload , will_qos , will_retain ) ;
mosquitto_connect_callback_set (mosq , my_connect_callback ) ;
mosquitto_disconnect_callback_set (mosq , my_disconnect_callback ) ;
mosquitto_publish_callback_set (mosq , my_publish_callback ) ;
rc  = mosquitto_connect (mosq , host , port , keepalive ,  true ) ;
MSG iMSGNum  = GetMSG ( ) ;
int iUserNum  = GetUsers (list ) ;
for ( int i  =  0  ; i  <  iUserNum  ; i  ++ )
{
    rc2  = mosquitto_publish (mosq ,  &mid_sent , topic ,  strlen (buf ) ,  ( uint8_t  * )buf , qos , retain ) ;
}
mosquitto_destroy (mosq ) ;
mosquitto_lib_cleanup ( ) ;

5 测试例子

这里使用的是 优狐安卓推送端进行测试。

5.1 启动Android端的 优狐即时推送客户端,点击开启
5.2 我们可以看到这个topic为 tokudu/155935358
5.3 下载mosquitto的源代码。
5.4 解压后,make && make install
5.5 执行(这里要注意:出错)

mosquitto_pub: error while loading shared libraries: libmosquitto.so.0: cannot open shared object file: No such file or directory

这是由于目录是生成到/usr/local/lib目录了,应该拷贝到/usr/lib目录

ln -s /usr/local/lib/libmosquitto.so.0 /usr/lib/libmosquitto.so.0

mosquitto_pub -h familysguardian.com -p 9999 -m sssss -t tokudu/155935358 -d

5.6 在Android端可以看到发送的消息sssss了。

5.7 在Server的实现方面可以完全参考pub_client.c的代码例子。

6 参考文章
6.1 http://mosquitto.org/download/
6.2 http://mosquitto.org/
6.3 http://doandroid.info/%E5%9B%A2%E9%98%9F%E7%A7%BB%E5%8A%A8%E4%BA%92%E8%81%94%E7%BD%91%E4%BD%9C%E5%93%81%E5%8F%8Ademo/android%E5%8D%B3%E6%97%B6%E6%B6%88%E6%81%AF%E6%8E%A8%E9%80%81%E5%B9%B3%E5%8F%B0demo/
6.4 http://familysguardian.com:8888/android_push/send.php
6.5 http://familysguardian.com:8888/android_push/index.php
6.6 http://doandroid.info/2012/03/19/android%E5%92%8Ciphone%E5%B9%B3%E5%8F%B0%E7%9A%84%E4%B8%80%E7%A7%8D%E9%9B%86%E7%BE%A4%E6%8E%A8%E9%80%81%E6%9C%8D%E5%8A%A1%E6%9E%B6%E6%9E%84/

-END-

mosquito服务器搭建配置通信 ssl/tls 安全 mosquito服务器实现 ssl/tls 安全配置通信 阅读详情

相关推荐

MQTT简介之八--mosquitto使用详解

mosquitto是一个开源broker,并且支持MQTTv3.1,支持客户端的验证。mosquitto包括服务端和客户端。 mosquitto_pub(发布)的用法 执行mosquitto_pub --help mosquitto_pub --help mosquitto_pub is a simple mqtt client that will publish a message on a single topic and exit. mosquitto_pub version 1.4.8 ru

caofengtao1314的专栏 3116

mosquitto客户端对象“struct mosquitto *mosq”管理上篇(mosquitto2.0.15客户端源码分析之三)

本文将详细介绍了mosquitto客户端对象“struct mosquitto *mosq”的初始化过程,分为上下两篇,上篇介绍对象的创建、初始化,下篇为网络参数设置和注册回调函数,为正在阅读mosquitto源码的读者提供一点参考。

robin861109的博客 1573

基于SpringBoot和MyBatisPlus的农场管理系统设计与实现

SpringBoot作为Java后端开发的轻量级框架,以其自动配置和快速部署能力,成为企业级应用的主流选择;MyBatisPlus则通过增强CRUD与条件构造器,大幅简化了数据持久层开发。在智慧农业与农业物联网的实践中,如何将土壤墒情监测、智能灌溉、农资追溯等业务转化为可执行的系统,是传统农场数字化转型的核心。一个基于SpringBoot和MyBatisPlus构建的农场管理系统,正是这一需求的典型方案。它整合了种植计划管理、传感器数据采集去重、灌溉规则决策、农资使用追踪等模块,采用单体应用架构应对中小规模

weixin_34408717的博客 472

tools - Mosquitto的安装与使用

mqtt基础知识简介ubuntu系统安装命令解析 简介 Eclipse Mosquitto是一个开源消息代理,轻量级的发布/订阅协议。 mqtt提供三种不同质量的消息服务: “至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复,Qos = 0 “至少一次”,确保消息到达,但消息可能会重复发生,Qos = 1 “只有一次”,确保消息到达一次,Qos =...

qq_25439881的博客 1193

C# chart以鼠标所在位置为中心进行缩放

以前都用labview做一些软件,但给出去总是会遇到版本,安装包过大等一些问题,于是想自学C#,记录一下使用过程中遇到的一些问题和解决措施,便于日后回顾。 在这个项目中需要绘制折线图,由于数据比较大,需要对图表进行缩放操作,以鼠标为中心对图表进行缩放,在网上查找了一些资料没找到我想要的,于是自己想了一个解决方案,可以基本实现,但略显繁琐,由于刚开始学习C#,对一些操作不太了解,若以后遇...

fei的博客 6363

SORT算法在遮挡下总跟丢?深入OC-SORT源码,拆解其三大创新点如何解决卡尔曼滤波的顽疾

本文深入解析OC-SORT算法如何通过三大创新点解决多目标跟踪中的卡尔曼滤波顽疾。OC-SORT引入在线平滑虚拟轨迹技术(OOS)、观测中心动量匹配机制(OCM)和基于最后观测的轨迹恢复(OCR),显著提升了遮挡场景下的跟踪性能。实验数据显示,相比传统SORT算法,OC-SORT在MOT17数据集上MOTA提升5.7%,遮挡恢复成功率提高64.2%,为Multi-Object Tracking领域带来突破性进展。

weixin_42547431的博客 238

【转】Mosquitto持久层群推消息实现思路

1 前言最近在考虑Android平台下基于Mosquitto实现持久层的群消息推送的问题,在这里整理一下思路。以为实现做准备。2Mosquitto项目说明Mosquitto项目是一个基于IBM MQTT协议的消息通讯服务器端,作者在考虑到Windows以及Linux及其他平台通用性的要求下,采用了select模型。按照模型本身,其所支撑的实时在线用户不要超过3000为宜。如果需要实现更多用户的群...

weixin_30678821的博客 282

CPD (Coherent Point Drift) 算法实现点云配准 C++版

作为和icp并列的点集配准算法cpd为什么没有icp火,等我把整个方案跑完才明白。 首先下载cpd https://github.com/gadomski/cpd 包含的fgt https://github.com/gadomski/fgt 下载到win10的解压后 运行cmake来进行编译 这个时候会提醒缺少eigen3 fgt python 这几个都安装排除后 在build文件夹下会生成vs2017的源码,右键全部生成后在 .\cpd-master\build\Debug 下会生成一个cpd.li

uranus1992的博客 3510

mqtt学习笔记

mosquito monitor idea check process mosquitto with pidfile /var/run/mosquitto.pid start = "/etc/init.d/mosquitto start" stop = "/etc/init.d/mosquitto stop" mosquito 是一个MQTT 服务器。目前只在公司移动互联网...

weixin_30455661的博客 318

MIKE水动力笔记4_制作网格

建立水动力模型前的重要一步就是制作网格,本文所讲内容就是如何在MIKE中制作网格。

晏长街的博客 2万+

Android15音频进阶之音效配置与解析(一百三十一)

本篇目的:Android15音频进阶之音效配置与解析。

Android系统攻城狮 2146

基于SSM框架构建小区报修系统:从业务流程设计到核心功能实现

在Java Web开发领域,SSM(Spring + Spring MVC + MyBatis)框架组合因其成熟稳定、社区资源丰富,常被视为构建中小型管理系统的经典技术选型。其核心原理在于通过Spring的IoC容器统一管理组件,Spring MVC清晰处理Web请求,MyBatis则提供灵活的SQL映射,共同实现了高效、可控的后端开发。这种技术栈的价值在于,它能以较低的风险和成本,支撑起业务流程的线上化与数据化管理。典型的应用场景包括各类需要将线下流程标准化、可视化的信息系统,例如OA、CRM以及本文聚焦

weixin_34396902的博客 443

基于STM32、HAL库的MCP4651-503E/ST数字电位器驱动程序设计

@param channel: 通道 (0: A通道, 1: B通道)* @param channel: 通道 (0: A通道, 1: B通道)// SPI1 SCK/MISO/MOSI引脚配置。* @param hmcp: MCP4651句柄。* @param hmcp: MCP4651句柄。* @param hmcp: MCP4651句柄。* @param hmcp: MCP4651句柄。* @param hmcp: MCP4651句柄。* @param hspi: SPI句柄。

corlin6688的博客 136

智慧社区老年人安全监护系统实现:从设备接入到告警闭环

物联网技术的成熟正推动智慧养老从概念走向落地。在社区养老与居家养老场景中,如何通过传感器与穿戴设备实时感知老人状态,并在跌倒、心率异常、长时间静默等事件发生时及时告警,是安全监护的核心难题。系统通常采用四层架构,设备数据经MQTT等物联网协议上报至平台,利用规则引擎结合历史数据进行二次研判,实现分级告警与自动处置,避免依赖老人主动求助。这一技术路径不仅能显著提升异常事件发现效率,还可为慢病管理积累连续数据。典型的应用包括电子围栏、跌倒检测、行为分析等,尤其在智慧社区项目中,可有效解决“出事了没人知道”的痛点

weixin_34054866的博客 393

恶劣天气下的分割鲁棒性:雨雪雾干扰消除

恶劣天气下的分割鲁棒性:雨雪雾干扰消除​ ,人工智能,计算机视觉,大模型,AI,本文围绕恶劣天气下语义分割鲁棒性及雨雪雾干扰消除展开,分析了雨雪雾对图像和分割任务的影响,介绍了基于图像增强、深度学习等现有解决方法,以及针对不同干扰的具体方案,还探讨了提高分割鲁棒性的策略、实验评估情况,指出当前面临复杂天气、数据缺乏、实时性等挑战,并展望了端到端模型、无监督学习等未来发展趋势,为该领域研究提供了全面参考。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 17万+

OpenClaw入门必装Skills(附使用场景)

很多同学安装了OpenClaw后,但却不会使用,就相当于你只是拥有了一副强大的躯干,却没有给它装上能够灵活执行任务的“手脚”和负责思考决策的“大脑插件”——Skills。没有这些核心能力的支撑,OpenClaw只是一个“空壳”,无法真正应用到实际业务场景中,更谈不上提升效率或解决复杂问题。所以,安装只是第一步,要真正让OpenClaw“活”起来,为我们所用,就需要给OpenClaw安装各种Skills,这个过程就是养虾的过程。

十二测试录 3223

mosquitto mysql_mosquitto权限验证

https://www.lixiaodong.com/?p=1631.安装需要的包sudo apt-get install libc-ares-dev libcurl4-openssl-dev libmysqlclient-dev2.下载mosquitto源码并编译安装从http://mosquitto.org/download/ 下载源码并解压到某个目录,进入该目录编译安装make mosqui...

weixin_31016735的博客 905

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

linux mosquitto 运行,Linux:MQTT通信协议之四 -- 编写mosquitto的C例程(异步函数)

#include #include #include #include #include "mosquitto.h"/* 设置打印开关 */#define DEBUG_PROCESS printf#define DEBUG_ERROR printf#define DEBUG_MSG printf// 定义运行标志决定是否需要结束static int g_iRunFlag =...

weixin_39979167的博客 636

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Centos8搭建Mosquitto(三)workerman/mqtt+workerman/mysql完成MQTT订阅消息持久存储Mysql数据库

Workerman是什么? Workerman是一款纯PHP开发的开源高性能的PHP socket 服务框架。 Workerman不是重复造轮子,它不是一个MVC框架,而是一个更底层更通用的socket服务框架,你可以用它开发tcp代理、梯子代理、做游戏服务器、邮件服务器、ftp服务器、甚至开发一个php版本的redis、php版本的数据库、php版本的nginx、php版本的php-fpm等等。Workerman可以说是PHP领域的一次创新,让开发者彻底摆脱了PHP只能做WEB的束缚。 实际上Worker

taogunet的博客 1711

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

mosquitto 安装mysql插件 进行权限验证

第一步:下载mosquitto源码并编译安装 https://github.com/eclipse/mosquitto 第二步:下载mosquitto-auth-plug源码 https://github.com/jpmens/mosquitto-auth-plug 第三步:准备编译环境 yum install gcc-c++ yum install libuuid-devel y...

liaoxiaolin520的博客 3023

linux 部署mosquitto外部连接到MySQL数据库记录mqtt消息

client = mqtt.Client(client_id="主机id")client.subscribe("#") # 订阅所有主题。client.username_pw_set("用户名", "密码")# 连接到Mosquitto代理(请替换为您的代理地址和端口)# 插入消息到数据库。"password": "密码","database": "数据库"# 连接到MySQL数据库。没有的文件夹创建一下。1.安装python3.7.x。# MySQL数据库连接信息。5.编写python脚本。

qq_40987844的博客 807

基于OpenWrt使用MQTT物联网协议详解和应用

MQTT(Message Queuing Telemetry Transport)是一种轻量级的通信协议,设计用于在低带宽和不稳定的网络环境中传输消息。它最初由IBM开发,用于连接远程设备和传感器到网络,并支持发布/订阅模型的消息通信。MQTT被广泛用于物联网(IoT)领域,其中大量的设备需要进行实时通信和数据交换。它采用了一种发布/订阅(publish/subscribe)模型,其中消息的发送者(发布者)将消息发布到特定的主题(topic),而订阅者可以选择性地订阅感兴趣的主题,以接收相应的消息。

zhouwu_linux的专栏 3947

MTQQ协议初探

MQTT协议协议简介MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、简单、规范,易于实现。这些特点使得它对很多场景来说都是很好的选择,特别是对于受限的环境如机器与机器的通信(M2M)以及物联网环境(IoT)。1、术语网络连接(Network Connection):MQTT协议使用的底层传输协议基础设施(客户端使用它连接服务器、提供有序双向可靠的字节流服务)...

jueying7573的博客 1万+

MQTT--mosquitto使用详解

mosquitto_pub(发布)的用法 用法: mosquitto_pub [-d] [-h hostname] [-i client_id] [-I client id prefix] [-p port number] [-q message QoS] [--quiet] [-r] { -f file | -l | -m message | -n | -s} [-u username [-P...

weixin_34192732的博客 1835

mosquitto 数据导入mysql

安装mysql 参考文档 其实mysql是我第一个安装的软件,数字1和字母l让我吃尽了苦头。还有很多字母拼写总是或拼写错。后来还是没办法,用ssl链接系统。通过网页粘贴命令。 ...

C_ASP的专栏 1807

如何将MQTT Mosquitto发布事件存储到MySQL中?

1 介绍 如果您熟悉Python,那么Paho MQTT库很简单,可以节省资源,并且可以与Mosquitto很好地交互。要使用它,只需订阅该主题并设置一个回调即可使用peewee将有效负载传递给MySQL 2 需求 用pywws实时收集气象站数据 使用pywws.service.mqtt发布到mqtt-Broker NAS上的python-script收集数据并写入MariaDB 3 代码 #!/usr/bin/python ...

drivery的专栏 1634
上一篇: AT&T Labs Research — Leading Invention, Driving Innovation
下一篇: Android和iPhone平台的一种集群推送服务架构
WingSu
博客等级 码龄23年 1粉丝 17原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值