利用XMPP协议推送服务器告警信息到安卓平台及桌面

简介:

XMPP的前身是Jabber,一个开源形式组织产生的网络即时通信协议。

XMPP目前被IETF国际标准组织完成了标准化工作。标准化的核心结果分为两部分;


核心的XML流传输协议

基于XML流传输的即时通讯扩展应用

XMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。借助于XML易于解析和阅读的特性,使得XMPP的协议能够非常漂亮。

XMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的,与其他业已得到广泛使用的即时通讯协议,诸如AIM,QQ等有功能完整,完善等先进性。



XMPP协议网络架构

XMPP是一个典型的C/S架构,而不是像大多数即时通讯软件一样,使用P2P客户端到客户端的架构,也就是说在大多数情况下,当两个客户端进行通讯时,他们的消息都是通过服务器传递的(也有例外,例如在两个客户端传输文件时).采用这种架构,主要是为了简化客户端,将大多数工作放在服务器端进行,这样,客户端的工作就比较简单,而且,当增加功能时,多数是在服务器端进行.XMPP服务的框架结构如下图所示.XMPP中定义了三个角色,XMPP客户端,XMPP服务器、网关.通信能够在这三者的任意两个之间双向发生.服务器同时承担了客户端信息记录、连接管理和信息的路由功能.网关承担着与异构即时通信系统的互联互通,异构系统可以包括SMS(短信)、MSN、ICQ等.基本的网络形式是单客户端通过TCP/IP连接到单服务器,然后在之上传输XML,工作原理是:

(1)节点连接到服务器;

(2)服务器利用本地目录系统中的证书对其认证;

(3)节点指定目标地址,让服务器告知目标状态;

(4)服务器查找、连接并进行相互认证;

(5)节点之间进行交互.


我们为什么要用XMPP协议做告警推送,因为xmpp通知够及时,流量更小。

我们熟知的gtalk 用的也是xmpp协议

我们用python来实现客户端

实现xmpp服务器告警通知,我总结有两种方法:

1.  直接使用免费的xmpp服务器接口,进行推送信息,最出名的就是gtalk了。  我们需要做的只是申请gmail的邮箱,然后在安卓下安装gtalk或者是支持gtalk的apk。然后通过xmpp协议进行推送信息。

我用的是python,后面有介绍他的接口的用法

2.   配置Openfire服务器,openfire是个开源的xmpp服务端。 我们可以自己架设一个im服务器,应该是更稳定,只是维护起来颇为麻烦。如果量大的话,建议用openfire的方法,毕竟你的发送量大的话,gtalk那边肯定有限制的。

204421183.png


开始行动~

xmpppy是一个Python的模块,它可以与Jabber.org服务器连接,发送消息。下面是我按照它的项目主页上的一篇基本入门文档做的试验,真是很简单


1
2
yum install python
pip install  xmpppy

使用例子


1
2
3
4
5
6
7
8
9
10
11
12
13
#导入 xmpp 模块
import  xmpp
#创建JID,传入的参数就是你申请的jabber标识,这里是一个示例
jid = xmpp.protocol.JID(‘yourname@jabber.org’)
#创建一个客户端
cl = xmpp.Client(jid.getDomain(),debug = [])
#与服务器连接
cl.connect()
#认证,要输入你的密码
cl.auth(jid.getNode(),’yourpassword’)
#发送消息,tojid为一个字符串,是目标jabber名字,text也是一个字符
#串,是你想发送的内容
cl.send(xmpp.protocol.Message(tojid,text))


如果你的 Jabber 客户端是用测试帐号已经打开,你会很快看到收到一条消息。

同时如果将汉字转成utf-8编码,我在 Gush 中的中文测试没有问题。

当然上面只是很简单的功能,但已经可以完成发送信息的功能。真不错。

除了 xmpppy  外还有一个叫 jabber.py 的包,我没有用过,看 xmpppy 介绍是差不多的。不过 xmpppy 的设计与 jabber.py 是不一样的,具体细节有兴趣再看了。


完整测试代码:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
import  sys,os,xmpp
if  len (sys.argv) >  2 :
print  "Syntax: xsend JID text"
sys.exit( 0 )
tojid = sys.argv[ 1 ]
text = ' ' .join(sys.argv[ 2 :])
jidparams = {}
jidparams[ 'jid' ] = 'yourname@gmail.com'
jidparams[ 'password' ] = 'yourpassword'
jid  =  xmpp.protocol.JID(jidparams[ 'jid' ])
cl  =  xmpp.Client(jid.getDomain(),debug = [])
cl.connect(( 'talk.google.com' , 5222 ))
cl.auth(jid.getNode(),jidparams[ 'password' ])
cl.send(xmpp.protocol.Message(tojid,text,typ = 'chat' ))


执行  python xsend.py rfyiamcoolnb@gmail.com '报警'


要把发信息的gmail帐号和收信息的gmail帐号加为好友才发的过去哦。


003850507.jpg

003850403.jpg



 本文转自 rfyiamcool 51CTO博客,原文链接:http://blog.51cto.com/rfyiamcool/1203949,如需转载请自行联系原作者



相关文章
|
18天前
|
存储 数据库 Python
使用HTTP POST协议将本地压缩数据发送到服务器
总的来说,使用HTTP POST协议将本地压缩数据发送到服务器是一个涉及多个步骤的过程,包括创建压缩文件,设置HTTP客户端,发送POST请求,以及服务器端的处理。虽然这个过程可能看起来复杂,但一旦你理解了每个步骤,就会变得相对简单。
66 19
|
1月前
|
存储 人工智能 项目管理
2025年GitHub平台上的十大开源MCP服务器汇总分析
本文深入解析了GitHub上十个代表性MCP(Model Context Protocol)服务器项目,探讨其在连接AI与现实世界中的关键作用。这些服务器实现了AI模型与应用程序、数据库、云存储、项目管理等工具的无缝交互,扩展了AI的应用边界。文中涵盖Airbnb、Supabase、AWS-S3、Kubernetes等领域的MCP实现方案,展示了AI在旅行规划、数据处理、云存储、容器编排等场景中的深度应用。未来,MCP技术将向标准化、安全性及行业定制化方向发展,为AI系统集成提供更强大的支持。
327 2
2025年GitHub平台上的十大开源MCP服务器汇总分析
|
1月前
|
存储 监控 API
【Azure App Service】分享使用Python Code获取App Service的服务器日志记录管理配置信息
本文介绍了如何通过Python代码获取App Service中“Web服务器日志记录”的配置状态。借助`azure-mgmt-web` SDK,可通过初始化`WebSiteManagementClient`对象、调用`get_configuration`方法来查看`http_logging_enabled`的值,从而判断日志记录是否启用及存储方式(关闭、存储或文件系统)。示例代码详细展示了实现步骤,并附有执行结果与官方文档参考链接,帮助开发者快速定位和解决问题。
88 23
|
1月前
|
安全 网络安全 定位技术
网络通讯技术:HTTP POST协议用于发送本地压缩数据到服务器的方案。
总的来说,无论你是一名网络开发者,还是普通的IT工作人员,理解并掌握POST方法的运用是非常有价值的。它就像一艘快速,稳定,安全的大船,始终为我们在网络海洋中的冒险提供了可靠的支持。
80 22
|
24天前
|
Go API 定位技术
MCP 实战:用 Go 语言开发一个查询 IP 信息的 MCP 服务器
随着 MCP 的快速普及和广泛应用,MCP 服务器也层出不穷。大多数开发者使用的 MCP 服务器开发库是官方提供的 typescript-sdk,而作为 Go 开发者,我们也可以借助优秀的第三方库去开发 MCP 服务器,例如 ThinkInAIXYZ/go-mcp。 本文将详细介绍如何在 Go 语言中使用 go-mcp 库来开发一个查询 IP 信息的 MCP 服务器。
85 0
|
2月前
|
存储 编解码 监控
Android平台GB28181执法记录仪技术方案与实现
本文介绍了大牛直播SDK的SmartGBD在执法记录仪场景中的应用。GB28181协议作为视频监控联网的国家标准,为设备互联互通提供规范。SmartGBD专为Android平台设计,支持音视频采集、编码与传输,具备自适应算法和多功能扩展优势。文章分析了执法记录仪的需求,如实时音视频传输、设备管理及数据安全,并详细阐述了基于SmartGBD的技术实现方案,包括环境准备、SDK集成、设备注册、音视频处理及功能扩展等步骤。最后展望了SmartGBD在未来智慧物联领域的广阔应用前景。
90 13
|
2月前
|
存储 编解码 开发工具
Android平台毫秒级低延迟HTTP-FLV直播播放器技术探究与实现
本文详细探讨了在Android平台上实现HTTP-FLV播放器的过程。首先介绍了FLV格式的基础,包括文件头和标签结构。接着分析了HTTP-FLV传输原理,通过分块传输实现流畅播放。然后重点讲解了播放器的实现步骤,涵盖网络请求、数据解析、音视频解码与渲染,以及播放控制功能的设计。文章还讨论了性能优化和网络异常处理的方法,并总结了HTTP-FLV播放器的技术价值,尤其是在特定场景下的应用意义。
140 11
|
2月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
3月前
|
弹性计算 数据可视化 网络安全
【够用就好006】-PC桌面管理ECS服务器的实操步骤
【够用就好006】-PC桌面管理ECS服务器的实操步骤#够用就好#知其然知其所以然#aigc创意人左边
|
5月前
|
存储 人工智能 自然语言处理
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
ChatMCP 是一款基于模型上下文协议(MCP)的 AI 聊天客户端,支持多语言和自动化安装。它能够与多种大型语言模型(LLM)如 OpenAI、Claude 和 OLLama 等进行交互,具备自动化安装 MCP 服务器、SSE 传输支持、自动选择服务器、聊天记录管理等功能。
1821 16
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器

热门文章

最新文章