Phoenix-im——基于Vert.x+vue的高性能即时通信系统

1,183 阅读3分钟

经过几个月的努力,利用业余时间终于做成了一个聊天系统,虽然还不完善,但是基本上可以使用了。先拿出来跟大家分享一下,后面再逐步完善。希望大家多多支持!

一、项目介绍

phoenix-im:本项目是一套基于vert.x开发的即时通信系统,项目代号凤雏。(不知道为什么现在一说凤雏第一反应出来的画面是大聪明Vert.x是一套基于NettyTool-kit,最大的特点在于异步,大大降低了传统阻塞模型中线程对于操作系统的开销。因此相比较传统的阻塞模型,异步模型能够很大层度的提高系统的并发量。因此phoenix-im可以在占用资源很少的情况下可以支持百万级别的并发。通信协议使用httpwebsocket,支持web形式的网页客户端 。服务端使用vert.x开发,要求JDK的版本为1.8以上。

二、系统架构

系统同时采用httpwebsocket协议。其中用户登录,查询联系人等动作使用http协议完成,发送和接收消息等需要长连接的处理使用websocket协议。系统架构如下图所示:

即时通信部分架构

三、开发环境

建议开发者使用以下环境,这样避免版本带来的问题

  • Windows、Linux
  • Eclipse、Idea
  • Mysql≧5.6
  • JDK≧8
  • Vert.x≧4.1.0
  • Maven≧3.6.3

四、快速体验

1.启动后台工程

  1. 检出源代码:

    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

  4. 创建数据库

    本系统使用mysql数据库,推荐使用MySQL5.7及以上版本。创建数据库phoenix(数据库使用utf8mb4编码),导入db/phoenix.sql,如果需要测试数据可以导入test-data.sql中的测试数据。

  5. 修改配置文件

    修改phoenix-core工程下的配置文件src/main/resources/phoenix.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的网页客户端。当然基于swing的java客户端看起来就比较low一些o( ̄︶ ̄)o但是功能都是一样的。

Swing客户端

通过上一步工程的克隆后,会发现工程中有一个模块phoenix-client,这个模块就是swing客户端,启动后台工程后,可以直接启动此工程来进行体验。

启动MainWin即可。

输入图片说明

html客户端

  1. 克隆客户端工程

    从仓库中克隆html客户端工程:

    git clone https://gitee.com/sublun/phoenix-client-web.git
    
  2. 部署工程

    此项目为纯前端项目,由于本人前端不是太熟练,目前无法驾驭vue的工程化项目,所以采用的还是比较原始的开发方式html+css+js所以工程无需编译下载后就可以直接部署。可以部署到任意http服务器下,推荐部署到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://localhost:7777
    

五、测试用户

用户名密码
zhangsan123
lisi123
wangwu123
wuchen123
wuchen1123

六、文档

项目说明文档

http://phoenix.sunny360.cn/

六、客户端截图

输入图片说明输入图片说明
输入图片说明输入图片说明
输入图片说明输入图片说明
输入图片说明输入图片说明

总结

项目还不太完善,后面会逐步完善的。希望对大家有帮助,感兴趣的小伙伴可以留言一起交流。如果想拍的话还请大家下手轻点儿。