目标: 搭建一个小型的即时通讯系统。

服务器端: Openfire

Android客户端:Smack

开发环境:Windows10、JDK、Android SDK

IDE: Android Studio

数据库: MySQL(Windows下推荐使用wnmp)

开始!

一、 服务器端

1.  直接从openfire的github仓库下载release版本:https://github.com/igniterealtime/Openfire/releases/download/v4.3.2/openfire_4_3_2.zip

版本是最新的4.3.2(2019/05/22)

2. 配置java环境(后面要开发android,这个应该都有了)

3. 安装数据库,并准备一个空的数据库。

4. 解压openfire到一个目录。

5. 打开命令行,进入openfire/bin目录,执行:

openfire.bat

6. 这时会弹出一个java的命令行界面,显示如下:

8.  打开浏览器,访问:http://localhost:9090

选择简体中文,点击continue。

9.  填写域和Host地址,这里因为是本地搭建,写任意的就行比如:test.com

10. 接着选择“标准数据库连接”

11. 配置数据库,填写数据库的地址、名称和用户名密码

11.1 注意,这时如果使用默认的编码设置,可能会收到这样一条错误:

11.2 提示我们看error.log,打开openfire/logs/error.log文件,我们发现了这个报错:

这个是时区设置问题,解决办法:在设置数据库连接地址的地方加上时区和编码格式的设置:

useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC

就行了。

但是

在设置完这个结果后,如果重启openfire,可能会遇到这种错误:

java.sql.SQLException:
ConnectionManager.getConnection() failed to obtain a connection after 11 retries.
The exception from the last attempt is as follows:
java.sql.SQLNonTransientConnectionException:
Cannot load connection class because of underlying exception:
com.mysql.cj.exceptions.WrongArgumentException:
Malformed database URL, failed to parse the connection string near
';useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC'.

打开openfire生成的目录里的openfire配置文件:

E:\server\openfire1\Openfire\distribution\target\distribution-base\conf\openfire.xml

找到这行:

<serverURL>jdbc:mysql://localhost:3306/openfire?rewriteBatchedStatements=true&amp;amp;useUnicode=true&amp;amp;characterEncoding=UTF-8&amp;amp;serverTimezone=UTC</serverURL>

会发现里面的“&”符合被转义成了“&amp;amp;”但是每个转义都多了一个“amp;”,改成这个“&amp;”就行了。

12. 接着选择默认设置

13. 设置管理员密码

14. 完成设置。

15. 登录页面,openfire启动成功。

下一篇文章开始开发Android客户端程序。

Openfire 即时通讯系统(服务器端+Android客户端)一相关推荐

  1. Netty实战 IM即时通讯系统(六)实战: 客户端和服务端双向通信

    ## Netty实战 IM即时通讯系统(六)实战: 客户端和服务端双向通信 零. 目录 IM系统简介 Netty 简介 Netty 环境配置 服务端启动流程 实战: 客户端和服务端双向通信 数据传输载 ...

  2. Netty实战 IM即时通讯系统(十二)构建客户端与服务端pipeline

    Netty实战 IM即时通讯系统(十二)构建客户端与服务端pipeline 零. 目录 IM系统简介 Netty 简介 Netty 环境配置 服务端启动流程 客户端启动流程 实战: 客户端和服务端双向 ...

  3. Netty实战 IM即时通讯系统(十)实现客户端和服务端收发消息

    Netty实战 IM即时通讯系统(十)实现客户端和服务端收发消息 零. 目录 IM系统简介 Netty 简介 Netty 环境配置 服务端启动流程 客户端启动流程 实战: 客户端和服务端双向通信 数据 ...

  4. Netty实战 IM即时通讯系统(九)实现客户端登录

    ## Netty实战 IM即时通讯系统(九)实现客户端登录 零. 目录 IM系统简介 Netty 简介 Netty 环境配置 服务端启动流程 客户端启动流程 实战: 客户端和服务端双向通信 数据传输载 ...

  5. Netty实战 IM即时通讯系统(八)服务端和客户端通信协议编解码

    Netty实战 IM即时通讯系统(八)服务端和客户端通信协议编解码 零. 目录 IM系统简介 Netty 简介 Netty 环境配置 服务端启动流程 客户端启动流程 实战: 客户端和服务端双向通信 数 ...

  6. Netty实战 IM即时通讯系统(五)客户端启动流程

    ## Netty实战 IM即时通讯系统(五)客户端启动流程 零. 目录 IM系统简介 Netty 简介 Netty 环境配置 服务端启动流程 实战: 客户端和服务端双向通信 数据传输载体ByteBuf ...

  7. 哇呼星聊即时通讯系统源码 Android+iOS+PC三端 附教程

    哇呼星聊即时通讯系统源码 Android+iOS+PC三端 附教程 服务器最低配置4H4G 这套安装跟shiku一样 1.安装宝塔,只安装Nginx,其他不用安装,不用创建站点 . 2.去Nginx ...

  8. 企业即时通讯系统十大排名

    企业即时通讯系统十大排名 即时通信,简称IM(InstantMessaging),是在网络技术飞速发展过程中个人电脑上涌现的一项非常流行的通信技术.它是继电子邮件.Web技术之后的第三大互联网应用. ...

  9. 哇呼IM即时通讯系统——技术解析

    哇呼IM即时通讯系统--技术解析 哇呼 哇呼"Chat"是一款包含android客户端/ios客户端/pc客户端/WEB客户端的即时通讯系统.本系统完全自主研发,服务器端源码直接部 ...

  10. GGTalk ——C#开源即时通讯系统

    http://www.cnblogs.com/justnow/ GGTalk --C#开源即时通讯系统 下载中心 GGTalk(简称GG)是可在广域网部署运行的QQ高仿版,2013.8.7发布GG V ...

最新文章

  1. Linux快速格式化T级硬盘并挂载
  2. easyui带表单的弹窗效果制作
  3. 第 4 章  超链接和路径
  4. python画激活函数图像
  5. 【bzoj 3601】一个人的数论 (莫比乌斯反演+伯努利数)
  6. app测试过程和重点关注内容
  7. 项目范围变更管理方法研究
  8. javaweb——新手上路1
  9. Go语言 常用日志记录方法
  10. Windows自带照片查看器恢复办法
  11. Spring IoC容器设计原理及高级特性
  12. SVN冲突 One or more files are in a conflicted state
  13. 通过下面语句创建employee数据库和dept(部门表)、emp(员工表)、salgrade(工资等级表)34题
  14. java二维数组的长度问题
  15. [转]花了500学的seo课程教程笔记公布
  16. hdu 5873 Football Games 模拟、兰道定理Landau's Theorem
  17. 虚拟机可以ping通主机,主机不能ping通虚拟机的解决办法
  18. 管窥《平凡的世界》写作特点之细节处理3500字
  19. 利用计算机技术网络技术,计算机技术和网络技术在机房管理中的应用研究
  20. php smarty加载失败,smarty模板无法加载如何解决?

热门文章

  1. C语言的进制转换以及算法实现
  2. JAVA WEB开发技术作业 HTML国家奖学金申请审批表
  3. 日期格式化中的大小写区别
  4. TopCoder SRM 678 Div2
  5. 全球及中国电动汽车电池市场产能规划及投资份额预测报告2021-2027年版
  6. Word文档没保存电脑死机了,重启打开文档一片空白怎么办?
  7. discuz发帖流程_C#代码、流程discuz论坛批量或自动发帖
  8. 百度网盘机器人好友群组消息虚拟商品自动发货回复软件机器人助手
  9. 计算机中8位二进制机器数,一个字节由8位二进制数组成,其最大容纳的十进制整数为()...
  10. python面向对象学习