自定义协议消息推送开源项目-CIM
2015-01-29 17:28
281 查看
现在市面上有很多xmpp协议的即时通讯方案,openfire androidpn,等等。它们都是使用了apache mina开发,但是这些东西基本都需要二次改造开发。而且改动还很大,我也看过这些东西的源码,发现代码结构不太理想,耦合的情况太多,实在不好扩展。所谓XMPP 协议。只不过是别人使用mina 自定义了一个消息编码解码协议。通俗的讲就是,xml形式消息的编码与解码,我们完全没有必要在国外这套不成熟的openfire
与xmpp 上耗费过多的精力去研究,我们完全可以通过apache mina 自定义自己的通讯协议,并可以为它使用自己的名字。我们不要盲目崇拜国外的有些东西,自己掌握原理,才是最重要的,各位切记~
这套IM系统为个人自主开发,使用了 apache mina(也支持netty版本,和mina版本结构和功能完全一致) ,主要功能为 服务端和客户端,客户端 到客户端的即时通信,可以支持包括文字 图片,语音等任何消息形式 服务端使用的 struts2+spring3和 apache mina android端 也使用的apache mina。这套IM系统结构还是非常清晰合理的,非常容易扩展和改造,下面是android版本
的 demo的目的是只是一个演示 ,可以参照它的代码,使用这套系统开发自己的东西,核心价值是一套高灵活性,相对标准化的即时通讯解决方案,即时聊天只是它的一种运用途径!
支持集群,其配置方案
服务端修改
1.多台服务器集群配置,首先需要重写SessionManager接口(参考com.farsunset.ichat.cim.session.ClusterSessionManager.java),用户登录时,将账号和服务器IP 存入数据库中,这样就可以统计各台服务器接受的连接数量。 2.客户端连接服务器时,服务端为客户端动态分配 服务器IP,每次分配 较为空闲的服务器IP 3.服务端接受消息后 通过接收者账号查询出对应的Iosession,和
登录的 服务器IP,然后将消息信息传往目标服务器处理发送
客户端端修改
1.客户端登录时将不在是固定的服务器IP 而是先通过http接口获取到当前空闲的服务器IP,然后登录。
开源地址:https://github.com/funset/androidim-cim
成功案例:http://www.eoeandroid.com/thread-300586-1-1.html
使用详情参考项目文档,非常详细。
控制台:
AAP Demo:
与xmpp 上耗费过多的精力去研究,我们完全可以通过apache mina 自定义自己的通讯协议,并可以为它使用自己的名字。我们不要盲目崇拜国外的有些东西,自己掌握原理,才是最重要的,各位切记~
这套IM系统为个人自主开发,使用了 apache mina(也支持netty版本,和mina版本结构和功能完全一致) ,主要功能为 服务端和客户端,客户端 到客户端的即时通信,可以支持包括文字 图片,语音等任何消息形式 服务端使用的 struts2+spring3和 apache mina android端 也使用的apache mina。这套IM系统结构还是非常清晰合理的,非常容易扩展和改造,下面是android版本
的 demo的目的是只是一个演示 ,可以参照它的代码,使用这套系统开发自己的东西,核心价值是一套高灵活性,相对标准化的即时通讯解决方案,即时聊天只是它的一种运用途径!
支持集群,其配置方案
服务端修改
1.多台服务器集群配置,首先需要重写SessionManager接口(参考com.farsunset.ichat.cim.session.ClusterSessionManager.java),用户登录时,将账号和服务器IP 存入数据库中,这样就可以统计各台服务器接受的连接数量。 2.客户端连接服务器时,服务端为客户端动态分配 服务器IP,每次分配 较为空闲的服务器IP 3.服务端接受消息后 通过接收者账号查询出对应的Iosession,和
登录的 服务器IP,然后将消息信息传往目标服务器处理发送
客户端端修改
1.客户端登录时将不在是固定的服务器IP 而是先通过http接口获取到当前空闲的服务器IP,然后登录。
开源地址:https://github.com/funset/androidim-cim
成功案例:http://www.eoeandroid.com/thread-300586-1-1.html
使用详情参考项目文档,非常详细。
控制台:
AAP Demo:
相关文章推荐
- PHP+ANDROID做消息推送:基于IBM的MQTT协议的Tokudu项目测试
- 我的mqtt协议和emqttd开源项目个人理解(3) - 客户端publish消息QoS==0的源码分析
- 我的mqtt协议和emqttd开源项目个人理解(12) - Hook使用和连接Kafka发送消息,使用ekaf库
- 我的mqtt协议和emqttd开源项目个人理解(7) - Qos==2是如何保证消息只收到一次的
- 集天气预报,TTS,深度学习人脸识别,邮件发送,温湿度采集,消息推送,lcd1602一体的树莓派开源项目
- PHP+ANDROID做消息推送:基于IBM的MQTT协议的Tokudu项目测试
- Android推送通知的实现--PHP+ANDROID做消息推送:基于IBM的MQTT协议的Tokudu项目测试
- 使用开源消息推送协议的实现-mosquitto
- 我的mqtt协议和emqttd开源项目个人理解(8) - 客户端subscribe消息的源码分析
- 我的mqtt协议和emqttd开源项目个人理解(2) - 订阅$SYS主题,捕获客户端上下线消息
- 基于Mqtt协议Paho项目实现Android消息推送
- 我的mqtt协议和emqttd开源项目个人理解(4) - 客户端CleanSession=0时,上线接收离线消息,源码分析
- 开源项目的各种协议简单介绍
- 开源项目之Android ViewBadger(自定义的视图布局)
- 关于开源框架Pushlet中的定点推送消息和与浏览器参数交互详解
- 【iOS Clock Synchronization】iOS时钟同步:基于NTP协议的开源项目ios-ntp
- android + PHP 实现消息推送(采用MQTT协议)
- 采用MQTT协议实现Android消息推送
- 常见的开源项目协议你知道几个?
- 采用MQTT协议实现Android消息推送