1.什么是即时通讯 你现在最常用的软件是什么,如果我没有猜错,应该是QQ和微信,是的,他们就是即时通讯软件. 一个可以让你无时无刻,只要有网络就能够沟通的工具,就是即时通讯工具.那么本教程,我们主要以openfire为基础来讲解即时通讯服务器和客户端的实现. 毫无疑问,为了更深入的理解openfire,我们也会深入openfire源码,尽可能多的了解它的美丽细节. 2 即时通讯的核心概念 那么要实现类似QQ这样一个即时通讯系统,主要会涉及哪些方面呢?Jack老师来详细为你白话一下. (1).需要…
1.首先登录到ubuntu server.在安装openfire 服务器之前,先确保你的系统已经更新到最新.然后输入下面的命令,一行一行执行,最后安装可用的更新 sudo apt-get update sudo apt-get upgrade 2.安装最新版本的Oracle JRE/JDK,使用PPA(personal package archieve)WEBUPD8的方式安装. sudo apt-get install python-software-properties sudo add-a…
本博文,保证不用装B的话语和太多专业的语言,保证简单易懂,只要懂JAVAEE开发的人都可以看懂. 本博文发表目的是,目前网上针对Websocket的资料太散乱,导致初学者的知识体系零零散散,学习困难加大.本博加以整理,并且实践. 所用核心技术选型: Tomcat + Spring 4.0.3 + Mongodb(高并发数据库) + SpringQueue(消息队列)+ ActiveMQ (消息队列) + Spring-data-Mongo + Servlet 3.0 +Spring-Websoc…
当你发现你的电脑上的openfire无论你是重新安装还是重启都无法启动的情况下你可以按照我下面写的那些终端指令来启动你的openfire不用再去重新做你的系统了. 一般你发现你的openfire打开出现这样的窗口后你就可以想到你的openfire出问题了,极个别的时候你可以通过重新安装来解决. 如果大家的问题重新安装后没有解决那就试下我下面的方法. 先打开自己电脑上的终端然后输入以下指令 //获取权限 /usr/local/openfire/bin  sudo su sh-3.2# cd /us…
什么是会话? A拨了B的电话 电话接通 A问道:Are you OK? B回复:I have a bug! A挂了电话 这整个过程就是会话. 会话(Session)是一个客户与服务器之间的不中断的请求响应序列.注意其中“不中断”一词. Openfire的通信,是以服务器为中转站的消息转发机制,客户端与服务器要实现通信,必须保持连接,即持有会话.Session的管理,集中在SessionManager模块中. SessionManager SessionManager提供了一系统与Session生…
 引言 目前互联网产品使用的即时通信协议有这几种:即时信息和空间协议(IMPP).空间和即时信息协议(PRIM).针对即时通讯和空间平衡扩充的进程开始协议SIP(SIMPLE)以及XMPP.PRIM与XMPP.SIMPLE类似,但已经不再使用了. 本次要讲的是XMPP,由Openfire实现. 1.Openfire与XMPP Openfire是开源的实时协作服务器(RTC),它是基于公开协议XMPP(RFC-3920),并在此基础上实现了XMPP-IM(RFC-3921),扩展了IM功能,对实施…
两个人的孤独 两个人的孤独,大抵是,你每发出去一句话,都要经由无数网络.由几百个计算机处理后,出在他的面前,而他就在你不远处. 连接管理之后 Openfire使用MINA网络框架,并设置ConnectionHandler为MINA的处理器,连接的启停.消息的收发,都在这个类中做中转.这是我们上一篇文章分析的内容. 那么,消息到了ConnectionHandler之后,是如何实现路由的,本文来一探究竟. ConnectionHandler类,MINA的处理器 ConnectionHandler是个…
还是从会话管理说起 上一章,Session经过预创建.认证之后,才正常可用.认证时,最重要的操作,就是将Session加入到路由表,使之拥用了通信功能. 添加到至路由表的操作,是在SessionManager中操作的,如下: SessionManager.addSession(LocalClientSession session): public void addSession(LocalClientSession session) { // Add session to the routing…
前言 写这章之前,我犹豫了一会.在这个时候提集群,从章节安排上来讲,是否合适?但想到上一章<路由表>的相关内容,应该不至于太突兀.既然这样,那就撸起袖子干吧. Openfire的单机并发量,一直是一个比较含糊的东西,即使官方也没有很清楚的介绍.但按我自已评估,以4核.8G内存这样的机器配置,5万+的并发应问题不大.而当用户体量逐步上涨,前期可以通过扩容的方式提升性能,但若体量足够大,如几十万并发,单机的扩容已不是首选的方案,一来考虑性价比,二来如果整套系统跑在一台机器上,出现异常可能会波及所有…
前言 在第六章<路由表>中,客户端进行会话时,首先要获取对方的Session实例.获取Session实例的方法,是先查找本地路由表,若找不到,则通过路由表中的缓存数据,由定位器获取. 路由表中的缓存,如下: public RoutingTableImpl() { super("Routing table"); serversCache = CacheFactory.createCache(S2S_CACHE_NAME); componentsCache = CacheFac…