这个超级轻量的 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 聊天系统真牛逼!的主要内容,如果未能解决你的问题,请参考以下文章
巴菲特是一代股神!那么Python就是股市的利器!Python真牛逼!