# phoenix-im **Repository Path**: sublun/phoenix-im ## Basic Information - **Project Name**: phoenix-im - **Description**: phoenix-im:本项目是一套基于vert.x开发的即时通信系统,项目代号“凤雏”。Vert.x底层基于Netty,最大的特点就在于异步,大大降低了传统阻塞模型中线程对于操作系统的开销。因此phoenix-im可以在占用资源很少的情况下可以支持百万级别的并发。通信协议使用websocket,并支持web网页客户端。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: http://phoenix.sunny360.cn/ - **GVP Project**: No ## Statistics - **Stars**: 19 - **Forks**: 12 - **Created**: 2021-07-28 - **Last Updated**: 2025-07-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

分享让世界更美好

Vert.x Logo gitee star

在线演示 在线使用手册

------------------------------------------------------------------------------- QQ交流群号: [![加入QQ群](https://img.shields.io/badge/966599919-blue.svg)](https://jq.qq.com/?_wv=1027&k=pWTdlAfs) # 一、项目介绍 **phoenix-im**:本项目是一套基于`vert.x`开发的即时通信系统,项目代号`凤雏`。(不知道为什么现在一说凤雏第一反应出来的画面是`大聪明`)`Vert.x`是一套基于`Netty`的`Tool-kit`,最大的特点在于异步,大大降低了传统阻塞模型中线程对于操作系统的开销。因此相比较传统的阻塞模型,异步模型能够很大层度的提高系统的并发量。因此`phoenix-im`可以在占用资源很少的情况下可以支持百万级别的并发。通信协议使用`http`、`websocket`,支持web形式的[网页客户端](https://gitee.com/sublun/phoenix-client-web.git) 。服务端使用`vert.x`开发,要求JDK的版本为1.8以上。 # 二、系统架构 系统同时采用`http`和`websocket`协议。其中用户登录,查询联系人等动作使用`http`协议完成,发送和接收消息等需要长连接的处理使用`websocket`协议。系统架构如下图所示: ![即时通信部分架构](https://images.gitee.com/uploads/images/2021/0924/182102_054f1fff_1399675.png "即时通信部分架构-v2.0.png") # 三、开发环境 建议开发者使用以下环境,这样避免版本带来的问题 * Windows、Linux * Eclipse、Idea * Mysql≧5.6 * JDK≧8 * Vert.x≧4.1.0 * Maven≧3.6.3 # 四、快速体验 ## 1.启动后台工程 1. 检出源代码: ```http git clone https://gitee.com/sublun/phoenix-im.git ``` 2. 导入项目 - clipse导入,菜单 `File -> Import`,然后选择 `Maven -> Existing Maven Projects`,点击 `Next>` 按钮,选择检出的项目`phoenix-im`文件夹,然后点击 `Finish` 按钮,即可成功导入 - IDEA导入,点击` Open...`,选择检出的项目`phoenix-im`文件夹,然后点击 `OK` 按钮,即可成功导入 3. 工程构建 本工程使用 `Maven` 对工程进行管理,初次加载会比较慢需要下载依赖的jar包。如果maven不会使用参考: [Maven入门首选,两小时快速掌握Maven精髓!!!_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1Xf4y1878w/) 4. 创建数据库 本系统使用mysql数据库,推荐使用MySQL5.7及以上版本。创建数据库`phoenix`(数据库使用utf8mb4编码),导入`db/phoenix.sql`,如果需要测试数据可以导入`test-data.sql`中的测试数据。 5. 修改配置文件 修改`phoenix-core`工程下的配置文件`src/main/resources/phoenix.json`修改其中连接数据库的配置信息。 ```json { "mysql.port":3306, "mysql.host":"127.0.0.1", "mysql.database":"phoenix", "mysql.user":"root", "mysql.password":"root", "mysql.pool-size":12 } ``` 6. 启动后台服务 运行`cn.sunny360.core.verticle.MainVerticle`中的`main`方法,启动工程。 ## 2.启动客户端 前台工程有两种,一种是基于swing的java客户端,一种是[基于vue的网页客户端](https://gitee.com/sublun/phoenix-client-web)。当然基于swing的java客户端看起来就比较low一些o(* ̄︶ ̄*)o但是功能都是一样的。 ### Swing客户端 通过上一步工程的克隆后,会发现工程中有一个模块`phoenix-client`,这个模块就是swing客户端,启动后台工程后,可以直接启动此工程来进行体验。 启动`MainWin`即可。 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0924/182216_7c4f69fe_1399675.jpeg "chat-client.jpg") ### html客户端 1. 克隆客户端工程 从仓库中克隆html客户端工程: ```http git clone https://gitee.com/sublun/phoenix-client-web.git ``` 2. 部署工程 此项目为纯前端项目,由于本人前端不是太熟练,目前无法驾驭vue的工程化项目,所以采用的还是比较原始的开发方式`html+css+js`所以工程无需编译下载后就可以直接部署。可以部署到任意http服务器下,推荐部署到nginx。 ```nginx server { listen 7777; server_name localhost; #charset koi8-r; access_log logs/host.access.log main; location / { root html客户端路径; index index.html index.htm; } } ``` 3. 访问 ```http http://localhost:7777 ``` # 五、测试用户 | 用户名 | 密码 | | -------- | ---- | | zhangsan | 123 | | lisi | 123 | | wangwu | 123 | | wuchen | 123 | | wuchen1 | 123 | # 六、文档 [项目说明文档](http://phoenix.sunny360.cn/) ```http http://phoenix.sunny360.cn/ ``` # 六、客户端截图 | ![输入图片说明](https://images.gitee.com/uploads/images/2021/0924/182258_13ce1abb_1399675.jpeg "html-chat-1.jpg") | ![输入图片说明](https://images.gitee.com/uploads/images/2021/0924/182309_2158f775_1399675.jpeg "html-chat-2.jpg") | |---|---| | ![输入图片说明](https://images.gitee.com/uploads/images/2021/0924/182319_601a9e24_1399675.jpeg "html-chat-3.jpg") | ![输入图片说明](https://images.gitee.com/uploads/images/2021/0924/182329_5e7793b1_1399675.jpeg "html-chat-4.jpg") | | ![输入图片说明](https://images.gitee.com/uploads/images/2021/0924/182338_ee9215fc_1399675.jpeg "html-chat-5.jpg") | ![输入图片说明](https://images.gitee.com/uploads/images/2021/0924/182347_8a77cf46_1399675.jpeg "html-chat-6.jpg") | |![输入图片说明](https://images.gitee.com/uploads/images/2021/0924/182402_ce6918b9_1399675.jpeg "html-chat-7.jpg")|![输入图片说明](https://images.gitee.com/uploads/images/2021/0924/182411_7191859d_1399675.jpeg "html-chat-8.jpg")|