这个超级轻量的 IM 聊天系统真牛逼!

Posted 微笑很纯洁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这个超级轻量的 IM 聊天系统真牛逼!相关的知识,希望对你有一定的参考价值。

哈喽,大家好,我是开源君,一个资深的互联网玩家,致力于为大家分享各领域优质开源项目。

各位开源老铁们,最近公众号改版了,大家记得星标开源指南,第一时间收到我们优质内容的更新!

对于一些想研究开源项目提升技术或者增加项目经验的小伙伴来说,一些小而精致的项目往往能给我们带来比较好的学习效果,因为项目太过于庞杂往往会陷入一些细节当中,找不到重点。

开源君今天给大家推荐的项目为 V-IM,它是一个基于 JS 的超轻量级聊天软件。前端:vue、iview、electron 实现的 PC&Web 版聊天程序,主要适用于私有云项目内部聊天,企业内部管理通讯等功能,主要通讯协议 websocket。支持 web 网页聊天实现。服务端:springboot、tio、oauth2.0 等技术。

项目介绍

项目结构:

  • V-IM-PC 是客户端

  • V-IM-Server 是服务端代码

  • doc 中有数据库

项目功能:

  • 文本聊天

  • 聊天表情

  • 发送图片(http)

  • 发送文件(http)

  • 单聊

  • 群聊

  • 用户分组(后端支持)

  • 离线消息(单聊)

  • 聊天记录(单聊、群聊)

  • 支持心跳检测,断线重连

  • 使用SpringBoot security oauth2.0 支持单点登录

  • 用户搜索

项目效果:

开源君推荐看一个项目的技术栈的方法:

在前端项目中,一般依赖都是在根目录的 package.json 中,我们可以从中看出项目采用了哪些技术。比如这个项目的前端使用了 vue 前端框架和 electron,前者是前端开发现在比较流行的框架,后者是用于客户端应用的。

// package.json
"dependencies": 
    "core-js": "^3.6.4",
    "view-design": "^4.2.0",
    "vue": "^2.6.12",
    "vue-router": "^3.1.6",
    "vuex": "^3.1.3",
    "vuex-persistedstate": "^2.5.4"
  ,
  "devDependencies": 
    "@vue/cli-plugin-babel": "~4.3.0",
    "@vue/cli-plugin-eslint": "~4.3.0",
    "@vue/cli-plugin-router": "~4.3.0",
    "@vue/cli-plugin-vuex": "~4.3.0",
    "@vue/cli-service": "~4.3.0",
    "@vue/eslint-config-prettier": "^6.0.0",
    "babel-eslint": "^10.1.0",
    "electron": "^8.0.0",
    "eslint": "^6.7.2",
    "eslint-plugin-prettier": "^3.1.1",
    "eslint-plugin-vue": "^6.2.2",
    "node-sass": "^5.0.0",
    "prettier": "^1.19.1",
    "sass-loader": "^10.1.0",
    "vue-cli-plugin-electron-builder": "~1.4.6",
    "vue-template-compiler": "^2.6.12"
  ,

在后端项目中,我们同样可以通过根目录下的 pom.xml 看到相关的依赖。从中可以看中采用了现在比较流行的 springboot,oauth,mybatis 等技术。

//pom.xml
<dependencies>
        <!-- 注意是starter,自动配置 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>
        <!-- 不是starter,手动配置 -->
        <dependency>
            <groupId>org.springframework.security.oauth</groupId>
            <artifactId>spring-security-oauth2</artifactId>
            <version>2.3.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 将token存储在redis中 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.t-io/tio-websocket-server -->
        <dependency>
            <groupId>org.t-io</groupId>
            <artifactId>tio-websocket-server</artifactId>
            <version>3.7.0.v20201010-RELEASE</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java -->
        <dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
            <version>3.6.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.15</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <dependency>
            <groupId>com.github.ulisesbocchio</groupId>
            <artifactId>jasypt-spring-boot-starter</artifactId>
            <version>1.14</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.30</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.2</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>net.sf.ehcache</groupId>
            <artifactId>ehcache</artifactId>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.5.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.16.0</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.13.0</version>
        </dependency>


    </dependencies>

更多 Github 项目使用方式与玩法,点击下方卡片,回复 20220301 获取项目地址。

写在最后

欢迎加入开源指南读者交流群,以摸鱼、白嫖技术课程为主,有一群有趣有料的小伙伴在等你哦!进群方式:开源指南 公众号 回复 666,按提示操作即可进群。

以上是关于这个超级轻量的 IM 聊天系统真牛逼!的主要内容,如果未能解决你的问题,请参考以下文章

晒一下日本各种程序员的年收入水平,Perl 真牛逼

巴菲特是一代股神!那么Python就是股市的利器!Python真牛逼!

京东把 Elasticsearch 用得真牛逼!日均5亿订单查询完美解决!

支付宝架构真牛逼

奋斗逼,真牛逼!

新来个阿里 P7,仅花 2 小时,撸出一个多线程永动任务,看完直接跪了,真牛逼!...