OpenFire 是采用Java开发的基于XMPP(Jabber)协议,开源实时协作(RTC)服务器。...OpenFire ——服务器端 Spark——客户端 Smack——XMPP 传输协议的实现 三者都是基于Java 语言的实现,其中XMPP是一个协议,协议是需要实现的,Smack起到的就是这样的一个作用...OpenFire 是基于XMPP 协议的IM 的服务器端的实现,虽然当两个用户连接后,可以通过点对点的方式来发送消息,但是用户还是需要连接到服务器来获取一些连接信息和通信信息的,所以服务器端是必须要实现的...Smack 是一个XMPP 协议的Java 实现,提供一套可扩展的API,不过有些时候,你还是不得不使用自己定制发送的XML 文件内容的方式来实现自己的功能 三者之间的关系: ?.../index.jsp OpenFire Installation Guide
Smack是即时通信客户端编程库,目前我已测通通过jsp使用smack的API向openfire注册用户发送消息,并且可以通过监听器获得此用户的应答消息。...Openfire 是基于XMPP 协议的IM 的服务器端的一个实现,虽然当两个用户连接后,可以通过点对点的方式来发送消息,但是用户还是需要连接到服务器来获取一些连接信息和通信信息的,所以服务器端是必须要实现的...Smack 是一个XMPP 协议的Java 实现,提供一套可扩展的API,不过有些时候,你还是不得不使用自己定制发送的XML 文件内容的方式来实现自己的功能 下图展示了三者之间的关系: ?...Openfire 是基于XMPP 协议的IM 的服务器端的一个实现,虽然当两个用户连接后,可以通过点对点的方式来发送消息,但是用户还是需要连接到服务器来获取一些连接信息和通信信息的,所以服务器端是必须要实现的...Smack 是一个XMPP 协议的Java 实现,提供一套可扩展的API,不过有些时候,你还是不得不使用自己定制发送的XML 文件内容的方式来实现自己的功能。
包括服务器端——Openfire,客户端——Spark,XMPP 传输协议的实现——Smack(记住,XMPP是一个协议,协议是需要实现的,Smack起到的就是这样的一个作用)。...的服务器端的一个实现,虽然当两个用户连接后,可以通过点对点的方式来发送消息,但是用户还是需要连接到服务器来获取一些连接信息和通信信息的,所以服务器端是必须要实现的。...Smack 是一个XMPP 协议的Java 实现,提供一套可扩展的API,不过有些时候,你还是不得不使用自己定制发送的XML 文件内容的方式来实现自己的功能 下图展示了三者之间的关系: ?...它提供了一些API,可以采用插件机制进行扩展,上图中,“部门”部分就是使用插件机制扩展出来的新功能。...Openfire 是一个用Java 实现的XMPP 服务器,客户端可以通过IQ 的方式与其进行通信(其实就是XML),客户端和服务器之间的通信是依靠底层Smack 库提供的各种功能来完成的。
openfire:是我在这个万花丛中找到的一点红。...openfire就在Servers中可以找到,spark在Clients可以找到,Smack在Libraries中找到。...1、spark可以使用在多平台上,这样PC端的算是解决了 2、smack包可以支持android平台,可以在这个包基础上定制开发android的产品 spark的功能还是比较完整的,文本、图片、文件消息都支持...只要在界面上做些定制便可以用于使用了。而且spark的通讯核心还是smack,这也充分说明了smack的重要性。...简单的写了一个单例的类:XmppConnectionService,主要是负责与Xmpp服务器的通讯管理,这里面最主要的就是建一个连接,由于smack(4.1.x)的版本更新后和之前老的api不一样了。
,分为tcp和udp两种形式 常见的术语 xmpp:基于xml的可拓展协议. jabber:xmpp的前身. openfire:支持xmpp的开源服务器 smack.jar:对xmpp协议封装.方便开发的...今日的互联网上有数以万计的XMPP服务器运作着,并有数以百万计的人们使用XMPP实时传讯软件。...安全: 任何XMPP协议的服务器可以独立于公众XMPP网络(例如在企业内部网络中),而使用SASL及TLS等技术的可靠安全性,已自带于核心XMPP技术规格中。...下载地址:http://www.igniterealtime.org/downloads/index.jsp smack使用指南:http://www.igniterealtime.org/builds...如意通的安装-->xmpp客户端2 pc端-服务器-pc端演示 smack常见api的查看.
tcp和udp两种形式 常见的术语 xmpp:基于xml的可拓展协议. jabber:xmpp的前身. openfire:支持xmpp的开源服务器 smack.jar:对xmpp协议封装.方便开发的jar...今日的互联网上有数以万计的XMPP服务器运作着,并有数以百万计的人们使用XMPP实时传讯软件。...安全: 任何XMPP协议的服务器可以独立于公众XMPP网络(例如在企业内部网络中),而使用SASL及TLS等技术的可靠安全性,已自带于核心XMPP技术规格中。...下载地址:http://www.igniterealtime.org/downloads/index.jsp smack使用指南:http://www.igniterealtime.org/builds...如意通的安装-->xmpp客户端2 pc端-服务器-pc端演示 smack常见api的查看.
Openfire的搭建与简单的demo之前写过篇《技术笔记:XMPP之openfire+spark+smack》,当时主要关注的怎么让这套体系跑起来吧,只不过现在还是在这个阶段,只是多学了点东西留下点笔记吧...在Openfire中的插件扩展方式主要是: IQHandler 在XMPP协议中IQ包是指的信息/查询,可以用于服务器与客户端之间进行数据查询,Openfir中实现了一个IQRouter来处理IQ包。...可以发展出各种用法,所以官方自己也实现了放多插件供使用。...在此也建议对于openfire的扩展最好还是使用插件吧,除非自己的定制要求很高,Openfire本身已经不适应了的。 我的要求基本都可以达成,而且这样以后升级新版本也非常简单,不会出现问题。...可恶的是2.7.7版本升级时发现代码大变,这个版本升级smack4.x版本,而且大量使用了1.8的新特性。所以又经过了一番代码合并才升级上来。另外说到smack基本不提供扩展,只提供事件的订阅。
在xmpp协议里可以扩展组件,这样我们写一个组件,然后连接到xmpp服务器,这样就可以应用于不同的xmpp服务器。 准备工作 主要的环境 因为我比较熟悉openfire的体系,所以自然就用它。...客户端暂时没有特别的需求,只是用于接收数据,所以用smack或者任何一款xmpp 客户端都可以。我为了简单就用smack写一个简单的代码。...这个类里包含了: 一个消息队列 一个发送线程 一个订阅列表 以及一些发送相关的xmpp组件 消息队列 //消息列表 private BlockingQueue packetQueue; 使用到了生产者消费者模式...这里使用到了componentManager,这个是openfire实现的一个组件管理类,通过这个类的对象可以发送xmpp数据包。 增加shutdown方法,使得线程可以在外部进行退出操作。...PushManager就是管理组件并连接到xmpp服务器的一个类。
产生这个问题的原因主要是网络不稳定、服务器或者客户端一些异常导致没有接收到消息。...因为产品中使用的是openfire和spark的组合,所以一直就想在这个范围内找一个现成的方案,只不过通过阅读一些开发者的总结提到说openfire没有消息回执的方案。...它必须在openfire3.9以上版本才支持,这个可以在openfire的版本日志里可以看到 它只是一种端到端的消息回执,而且只有接收端收到消息后才会返回回执,这样对于发送者来说很麻烦,如果接收者不在线无法得知消息是否发出了...于是看了自己的openfire是4以上版本的,所以确实支持。然后检查了客户端使用的smack包里确实有XEP-0184的实现。...只不过在smack要4.1.x以上版本,而且默认是不开启流管理功能的,所以要手动的开启一下,剩下的事情由smack和openfire来完成。
这里用到的方法都是MultiUserChat的方法,具体可以去看Smack的API文档。...在openfire中一个RosterEntry可以同时属于多个分组。 4.1获取联系人 当用户通过一个连接登录服务器后,用户可以从服务器获取自己的Roster列表。...Smack使用了一种订阅的Presence的方式来获取状态,这样确保用户隐私,因为只有允许订阅才能获取状态。 对于订阅请求,用户有三种处理方式:接受所有、拒绝所有和手动处理。...要实现隐私管理首先需要了解他的三个API PrivacyListManager: 这是重新获得并处理服务器隐私列表的主API类。 PrivacyList: 代表一个隐私列表,有一个名字,一组隐私项目。...6.1在服务器端安装插件 从网上下载gateway插件,推荐使用Kraken IM Gateway ,将Kraken IM Gateway 单独jar包拷贝到openfire的plugin目录下
本文将深入探讨:XMPP协议的原理即时通讯中如何使用XMPP服务基于Java Spring构建XMPP服务优雅草蜻蜓I水银版如何利用XMPP实现私有化即时通讯—-.2....2.2 XMPP通信模型XMPP采用客户端-服务器(C-S)架构,通信流程如下:客户端连接服务器:使用TCP(通常端口5222)或WebSocket。...3.2 XMPP服务器选择常见开源XMPP服务器:Ejabberd(Erlang,高性能)Openfire(Java,易于扩展)Prosody(Lua,轻量级)4....基于Java Spring构建XMPP服务4.1 使用Smack库(XMPP客户端库)Smack是Java生态中最流行的XMPP客户端库,可与Spring集成。...Maven依赖: org.igniterealtime.smack smack-core</artifactId
引发的思考 敏捷之痒 数据库\缓存\存储开发相关 数据库SQL,NoSQL之小感悟 MongoDB安装与使用体验 缓存遇到的数据过滤与分页问题 哪种缓存效果高?...session的共享到可扩展缓存设计 Apache Ignite Apache Ignite之集群应用测试 Ignite性能测试以及对redis的对比 Apache Ignite高性能分布式网格框架-初探 openfire...在Openfire上弄一个简单的推送系统 Openfire的启动过程与session管理 Openfire集群源码分析 openfire的组件(Component)开发 Openfire阶段实践总结...技术笔记:XMPP之openfire+spark+smack XMPP协议之消息回执解决方案 delphi相关 技术笔记:Indy IdSMTP支持腾讯QQ邮箱邮件发送 技术笔记:Indy的TIdSMTP...delphi多线程知识 WEB开发相关 Http状态码之:301、302重定向 学点HTTP知识 学习笔记:URL Protocol在浏览器中打开本地应用程序 学习笔记:发现一个IE版本判断的好方法 使用
openfire群聊与QQ群对比 应该是去年的时候开始接触openfire,当时在分析后发现基于xmpp协议的openfire已经具备了群聊的功能。...自己定义一套协议来完成客户端与服务端的通讯 因为要走openfire,所以还是要定义xmpp协议,我用的是IQ。考虑到我使用的是smack做的,所以这部分就不再写了。...特别是可以设计成rest api,这样对于端来说是比较友好通用的,兼顾PC、移动端就简单多了,特别是移动端走http协议总比走长链接方便吧。...利用HistoryStrategy限制服务端推送条数 所以不用举太多问题,就这两个就够了,那么我觉得openfire的这种历史消息策略中使用number(条数)是很重要的。...比如服务器只缓存最近1000条聊天历史,这样整体的服务器缓存量就低了。这就解决了第一个问题。
配置服务器防火墙端口 打开服务器上的端口号,保证不被信息可以正常入站。 修改MySQL的用户权限 1️⃣ 增加远程连接权限 默认情况下mysql不提供给远程用户连接的权限。...在服务器上打开cmd,按行输入如下命令: 首先需要配置好 MySQL 环境变量,才能执行下方代码。...from mysql.user; 如何修改MySQL身份验证协议 alter user 'root'@'%' identified with mysql_native_password by '你的服务器密码
标题: 连接到服务器 ------------------------------ 无法连接到 xxxxx。...未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。
在XMPP协议中最为明显的使用场景就是群聊,这就是一个典型的例子。...外部组件,可是独立的一个应用程序,以tcp形式连接到openfire中,当然就不能获取到主域中的资源啦。...这两种组件的应用场景各有不同,内部组件可以与主域实现的比较紧密,基本上就是openfire一部分,比如你想扩展群聊为QQ形式的群,就可以使用内部组件来实现。...在openfire中就引用了这个包,所以基本上服务端中使用这个协议包。 whack 在tinder基础上提供了外部组件开发的一个开发包,使开发人员更方便的搭建openfire的外部组件。...服务器地址和端口中的端口是指外部组件访问端口,这个端口可以在openfire服务器设置。 setSecretKey是用于设置连接的密码,这个也要根据服务器的设置来填写。 服务器的设置如下图中: ?
Openfire是一个非常不错的IM服务器,而且是纯Java实现,具有多个平台的版本,他的数据存储可以采用多种数据库,如MySQL,Oracle等。...在实际使用时大家遇到最多的就是采用MySQL数据库后的中文乱码问题,这个问题十分有趣,而且从现象上可以看出Openfire内部的一些机制。...实际问题是这样的:首先启动Openfire服务器,然后利用客户端或直接登录到后台新建一个帐户,为该帐户指定一些中文的属性,如姓名等。...如果不重启服务器,你永远不会觉得有什么不对的地方,因为所有的中文显示都是正常的。接下来重启一下Openfire,再用建立的帐号登录客户端或进入后台管理端查看,会发现所有的中文全都变成了问号。...useUnicode=true&characterEncoding=utf8 如果已经安装完成,这个配置也是可以改动的,直接到Openfire的安装目录下,找到conf/openfire.xml这样一个文件
描述 openfire是一个非常不错的IM服务器,而且是纯Java实现,具有多个平台的版本,他的数据存储可以采用多种数据库,如MySQL,Oracle等。...在实际使用时大家遇到最多的就是采用MySQL数据库后的中文乱码问题,这个问题十分有趣,而且从现象上可以看出openfire内部的一些机制。...实际问题是这样的:首先启动openfire服务器,然后利用客户端或直接登录到后台新建一个帐户,为该帐户指定一些中文的属性,如姓名等。...; 连接字符串设置 其次,在初始化openfire数据库,即第一次配置openfire服务器时,在连接数据库那里的连接串要加入字符编码格式,必须在连接里增加UTF8的编码要求,连接字符串设置如下: jdbc...useUnicode=true&characterEncoding=utf8 如果已经安装完成,这个配置也是可以改动的,直接到openfire的安装目录下,找到conf/openfire.xml这样一个文件
1.前言: 近来笔者接到公司的一个IM开发需要,要在原来的Web业务系统、移动端系统上加入一个即时聊天的功能,具有就是能聊天就行。...相信各位也会接到需要开发IM的系统的任务,那么,开发一个im系统应选用哪种通讯协议?...缺点: 基于xml 实现的通讯协议, 消息载体比较重, 增加网络流量, 定制困难,需要了解openfire原理, 改造有一定的难度。...在接口方面,socket.io统一了通信的API,在内部实现上支持WebSocket,AJAX long-polling, AJAX multipart streaming, Forever Iframe...socket.io 具有自动重连的功能,适用于恶劣的网络环境。