利用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,如需转载请自行联系原作者



相关文章
|
1月前
|
Ubuntu 网络协议 Java
【Android平板编程】远程Ubuntu服务器code-server编程写代码
【Android平板编程】远程Ubuntu服务器code-server编程写代码
|
1月前
|
弹性计算 安全 定位技术
幻兽帕鲁服务器搭建攻略:【阿里云平台快速上手指南】
2024年,火爆畅销的《幻兽帕鲁》游戏让无数玩家着迷不已!那么,您是否急切想要拥有一个能与伙伴们一起畅快玩耍的游戏服务器呢?现在就跟随若城的脚步,一起动手搭建一个属于自己的《幻兽帕鲁》服务器吧!让这个新年有心意
|
15天前
|
Linux
centos 查看服务器信息 版本cpu
centos 查看服务器信息 版本cpu
12 0
|
1月前
|
运维 监控 Java
应用研发平台EMAS产品常见问题之安卓构建版本失败如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
|
1月前
|
存储 数据挖掘 Windows
服务器数据恢复—异常断电导致raid信息丢失的数据恢复案例
由于机房多次断电导致一台服务器中raid阵列信息丢失。该阵列中存放的是文档,上层安装的是Windows server操作系统,没有配置ups。 因为服务器异常断电重启后,raid阵列可以正常使用,所以未引起管理员的注意。后续出现的多次异常断电导致raid报错,服务器无法找到存储设备,进入raid管理模块进行任何操作都会导致操作系统死机。管理员尝试多次重启服务器,故障依旧。
|
1月前
|
运维 监控 Android开发
应用研发平台EMAS常见问题之安卓push的离线转通知目前无法收到如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
25 1
|
1月前
|
弹性计算 大数据 测试技术
2024年阿里云服务器报价参考,阿里云服务器活动优惠配置价格信息整理汇总
随着云计算技术的日益成熟,云服务器已成为众多企业和个人的首选。在众多云服务商中阿里云以其稳定的性能、高性价比而备受瞩目。今天,就为大家带来2024年最新的阿里云服务器优惠价格信息。 阿里云服务器: 轻量应用服务器及ECS优惠价格: 2核2G3M轻量应用服务器:一年62元 2核2G3M经济型e实例云服务器ECS:一年99元 2核4G通用算力型u1实例云服务器ECS:一年706.25元 2核8G通用算力型u1实例云服务器ECS:一年877.32元
|
1月前
|
弹性计算 Ubuntu Linux
2024年阿里云幻兽帕鲁Palworld游戏服务器价格信息整理总结
在探索《幻兽帕鲁》这款独特开放世界生存游戏的过程中,你是否曾想过拥有一台专属的游戏服务器,与好友一同畅享不受限的冒险体验?现在,阿里云为你提供了这一绝佳机会!
23 0
|
1月前
|
弹性计算 搜索推荐
阿里云幻兽帕鲁专用服务器多少钱?2024年阿里云幻兽帕鲁Palworld服务器收费报价信息整理
在追求极致游戏体验的道路上,阿里云为幻兽帕鲁的玩家们带来了一个重磅好消息:专用的游戏服务器正式上线!这不仅意味着更加流畅、稳定的游戏环境,更代表着个性化游戏体验的新篇章。对于游戏爱好者来说,服务器的选择直接关系到游戏体验的优劣。阿里云针对幻兽帕鲁推出的专用服务器,提供4核16G和8核32G两种配置选择,充分满足不同玩家的需求。其中,4核16G配置仅需26元/月起,适合小型团队或个人玩家,轻松支持最多8人同时在线;而8核32G配置则以90元/月的价格,为大型团队或追求更高性能的玩家提供强力支持,最多可容纳20人同时畅游游戏世界。
38 0
|
1月前
|
弹性计算 大数据 测试技术
阿里云服务器价格多少钱?2024年阿里云服务器收费标准信息整理大全
在当今这个数据驱动的时代,云服务器已成为企业和个人的首选。其中,阿里云以其稳定性、高效性和安全性备受赞誉。那么,阿里云服务器究竟多少钱呢?接下来就为大家带来详细的收费标准信息。 对于轻量级应用,阿里云2核2G3M轻量应用服务器一年的价格仅为62元,非常适合小型网站和个人博客。如果需要更高的配置,阿里云2核2G3M经济型e实例云服务器ECS一年价格为99元,性价比极高。
290 0